-(voID) setFoo:(Foo *)newFoo { // Safeguards // ... [self willChangeValueForKey:@"foo"]; // Switcheroo // ... [self dIDChangeValueForKey:@"foo"];}
但是我在博客中看到很多代码,他们在做Cocoa的时间比我长得多,在这里是这样的:
-(voID) setFoo(Foo *)newFoo { // Safeguards // ... // Switcheroo // ...}
所以我的问题是,我们需要调用KVO通知方法吗?或者,当您更新私有iVar时,如果您使用现代运行时,它是否会神奇地完成?
解决方法 除非你选择退出,否则它是神奇的.阅读KVO指南的 this section.请注意,KVC / KVO从远古时代(即在引入@property之前)存在,所以设置者是否被合成是无关紧要的.它甚至与旧的/新的运行时二分法无关.这个魔术(isa-swizzling)的细节在Mike Ash的blog post中详细描述.这是魔法.基本上,当观察到键时,运行时将自动替换设置器的实现,以便调用KVO通知.
总结以上是内存溢出为你收集整理的objective-c – 你需要调用willChangeValueForKey吗?和didChangeValueForKey:?全部内容,希望文章能够帮你解决objective-c – 你需要调用willChangeValueForKey吗?和didChangeValueForKey:?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)