叫了兩聲我有一個的NSOperation子類,它實現setFinished:生成KVO通知:可可志願:observeValueForKeyPath:ofObject變化:背景:爲一個價值變動
-(void)setFinished:(BOOL)isFinished
{
LogError(@"%@ will will changing isFinished to %d",self,isFinished);
[self willChangeValueForKey:@"isFinished"];
LogError(@"%@ did will changing isFinished to %d",self,isFinished);
_isFinished = isFinished;
LogError(@"%@ will did changing isFinished to %d",self,isFinished);
[self didChangeValueForKey:@"isFinished"];
LogError(@"%@ did did changing isFinished to %d",self,isFinished);
}
我也相信,我有隻能將觀察者添加到操作中一次。
奇怪的事情來了,有時observeValueForKeyPath:ofObject:change:context:
此對象的isFinished
關鍵路徑稱爲兩次,指的是日誌,我只找到setFinished:
調用一次,並addObserver:forKeyPath:
此操作只調用一次。
另外,我發現它的順序是這樣的:
will will changing isFinished to 1
did will changing isFinished to 1
will did changing isFinished to 1
calling observeValueForKeyPath for object
did did changing isFinished to 1
calling observeValueForKeyPath for object
所以任何人有任何線索,請?
的'iphone'標籤暗示的iOS,而'cocoa'意味着OSX。你的意思是? – rmaddy
KVO在兩個系統上都是一樣的。 –
@rmaddy我只想讓我的問題再暴露一點,如果我遇到了一些法規,請通知我,謝謝。 – CarmeloS