我想了解可可綁定的方向性。特別是,我寫了這個小程序來演示綁定,我不確定它爲什麼輸出它的功能。下面是程序:可可綁定不反向更新
@interface SimpleClass : NSObject
@property (retain) NSString *s;
@end
@implementation SimpleClass
@end
int main(int argc, char *argv[]) {
SimpleClass *simpleClass1 = [[SimpleClass alloc] init];
SimpleClass *simpleClass2 = [[SimpleClass alloc] init];
[simpleClass1 bind:@"s" toObject:simpleClass2 withKeyPath:@"s" options:nil];
//[simpleClass1 willChangeValueForKey:@"s"];
simpleClass1.s = @"Hello, World!";
//[simpleClass1 didChangeValueForKey:@"s"];
NSLog(@"%@", simpleClass1.s);
NSLog(@"%@", simpleClass2.s);
simpleClass2.s = @"Something else!";
NSLog(@"%@", simpleClass1.s);
NSLog(@"%@", simpleClass2.s);
return 0;
}
當我運行這個程序,輸出是:
Hello, World!
(null)
Something else!
Something else!
這使我相信,綁定是單向的。但是,我遇到this和this,似乎都說綁定應該是雙向的(雖然都不是很清楚)。取消註釋willChangeValueForKey和didChangeValueForKey行不會影響輸出。
我的結論是否正確,綁定是單向的?或者有什麼方法可以在綁定創建時指定它應該是雙向的?
檢查此帖:http://stackoverflow.com/questions/14775326/bindtoobjectwithkeypathoptions-is-one-way-binding – user1502383 2014-11-25 06:55:28
正確;我已經把這個問題與這個問題聯繫起來了。關於「NSContinuouslyUpdatesValueBindingOption」這個問題的答案似乎與綁定的方向性無關。 – Litherum 2014-11-25 07:01:04
結論不應該是「這使我相信綁定是**唯一的定向。」? – MartinW 2015-06-03 19:40:29