【发布时间】:2011-05-05 06:14:35
【问题描述】:
总之,当属性值发生变化时,我必须在我的代码中更新一些逻辑,例如:
- (void)setProp:(NSString *)theProp
{
if (prop != theProp){
[prop release];
prop = [theProp copy];
[self myLogic];
}
}
或:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context
{
if ([keyPath isEqualToString:@"prop"]){
[self myLogic];
}
}
哪种方法最好,为什么?
编辑:我喜欢第二种方式,因为我不知道编译器会为我生成什么 @synthesize 指令,我选择相信编译器比我的 owe setter 实现更聪明,因此我不会破坏某些东西.
【问题讨论】:
标签: objective-c properties key-value-observing setter