8

observeValueForKeyPath è sempre chiamato dal thread principale?ObservanceValueForKeyPath viene sempre chiamato dal thread principale?

sto accedendo chiamate con

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

e sembra essere la stampa 1 ogni volta, ma non sono riuscito a trovare alcuna garanzia in tal senso nei documenti. Qualcuno può confermare questo è il caso?

risposta

19

In generale, n.

Si riceve observeValueForKeyPath:ofObject:change:context: sulla discussione che ha modificato il valore. Il metodo setter che modifica il valore invia il messaggio a tutti gli osservatori dopo aver aggiornato il valore e prima di tornare.

Se si chiama solo il setter sul thread principale, si osserverà solo la modifica sul thread principale.

+1

Fantastico, grazie – bcattle

Problemi correlati