【发布时间】:2015-09-08 14:28:26
【问题描述】:
我一直在尝试修复我们的 NSOperation 子类中的一个问题,我认为这可能与我们对 KVO 的手动更改通知有关。在更新 NSOperation 状态时,我检查过的所有来源似乎都执行以下操作:
[self willChangeValueForKey:@"isExecuting"];
[self willChangeValueForKey:@"isFinished"];
_isExecuting = NO;
_isFinished = YES;
[self didChangeValueForKey:@"isFinished"];
[self didChangeValueForKey:@"isExecuting"];
相比之下,我们一直是这样做的:
[self willChangeValueForKey:@"isExecuting"];
_isExecuting = NO;
[self didChangeValueForKey:@"isExecuting"];
[self willChangeValueForKey:@"isFinished"];
_isFinished = YES;
[self didChangeValueForKey:@"isFinished"];
谁能告诉我为什么前者似乎是推荐的这样做方式?
Apple 的 KVO 文档似乎也推荐第一种方法。不幸的是,他们没有解释原因。(https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/KeyValueObserving/Articles/KVOCompliance.html#//apple_ref/doc/uid/20002178-SW3)/
【问题讨论】:
标签: ios objective-c cocoa key-value-observing nsoperation