Erscheint die 3,0 NDA wurde aufgehoben, so sollte dies sicher zu stellen sein. Wenn dies gegen eine NDA verstößt, lass es mich wissen, damit ich den Beitrag nach der Eile entfernen kann.KVO auf dem iPhone auf 3.0 vs 2.2.1, mit einem Problem
Ich habe eine sehr triviale Implementierung für KVO auf einer NSOperationQueue. Mein Problem ist, dass ich beim Kompilieren mit 2.2.1 SDK unterschiedliche Ergebnisse für die betreffende NSOperationQueue für ein Gerät mit 3.0 oder eines mit 2.2.1 bekomme. Ich habe dies auf 1 iPod Touch, der 2.2.1, eine, die 3.0 hat, und zwei Sätze von iPhones mit ähnlichen Setups bestätigt.
Der Code sieht wie folgt aus:
// set observer
[self.myOperationQueue addObserver:self forKeyPath:@"operations" options:NSKeyValueObservingOptionNew context:NULL];
// implementation
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"operations"]) {
NSInteger operationCount = [[(NSOperationQueue*)object operations] count];
NSArray *operations = [(NSOperationQueue*)object operations];
}
}
Gemäß dem obigen Code, das Gerät 3.0 läuft die korrekte operationCount und die richtigen Operationen zurück. Ein Gerät, auf dem 2.2.1 ausgeführt wird, gibt immer nil für Operationen und 0 für operationCount zurück.
Ich kann nicht sagen, warum das der Fall ist. Alle Builds sind gegen 2.2.1 kompiliert.
HINWEIS
Gemäß Matts Antwort unten; "Objekt" ist null auf 2.2.1. Es ist nicht Null auf 3.0.
Verwenden Sie NSLog(), um den Wert des Objekts zu überprüfen, nicht GDB. Ich bin auf ein seltsames Problem gestoßen, das für 2.2.1 mit dem Xcode 3.1.3 aufbaut: http://www.openradar.me/7017295 –