8

是否總是從主線程調用observeValueForKeyPath是否始終從主線程調用observeValueForKeyPath?

我記錄電話與

-(void) observeValueForKeyPath:(NSString *)keyPath 
         ofObject:(id)object 
         change:(NSDictionary *)change 
         context:(void *)context 
{ 
    NSLog(@"KVO: isMainThread %d", [NSThread isMainThread]); 
    // ... 
} 

,似乎每次都被打印1,但我無法找到的文檔的任何保證。任何人都可以證實這是事實嗎?

回答

19

一般來說,沒有。

您在更改值的線程上收到observeValueForKeyPath:ofObject:change:context:。更改值的setter方法會在更新值和返回之前將消息發送給所有觀察者。

如果您只在主線程上調用setter,那麼您只會觀察主線程上的更改。

+1

太棒了,謝謝 – bcattle 2014-09-05 23:04:03

相關問題