首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么NSOperation会禁用自动键值观察?

为什么NSOperation会禁用自动键值观察?
EN

Stack Overflow用户
提问于 2010-08-26 16:15:31
回答 2查看 4.3K关注 0票数 20

在使用自定义NSOperation子类时,我注意到[NSOperation automaticallyNotifiesObserversForKey]类方法禁用了自动键值观察(它至少为某些键路径返回NO )。正因为如此,NSOperation子类中的代码被手动调用willChangeValueForKey:didChange…弄得乱七八糟,这在web上的许多代码示例中都可以看到。

为什么NSOperation要这么做?有了自动KVO支持,人们可以简单地声明操作生命周期标志(isExecuting等)的属性。并通过访问器触发KVO事件,即。以下代码:

代码语言:javascript
复制
[self willChangeValueForKey:@"isExecuting"];
executing = NO;
[self didChangeValueForKey:@"isExecuting"];
[self willChangeValueForKey:@"isFinished"];
finished = YES;
[self didChangeValueForKey:@"isFinished"];

…可以替换为以下内容:

代码语言:javascript
复制
[self setIsExecuting:NO];
[self setIsFinished:YES];

在什么地方有陷阱吗?我刚刚重写了automaticallyNotifiesObserversForKey以返回YES,一切似乎都很正常。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3573236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档