Eine Klasse hat eine Eigenschaft (und Instanzvariable) vom Typ NSMutableArray mit synthetisierten Accessoren (via @property
). Wenn Sie dieses Array mit folgenden Elementen beobachten:
[myObj addObserver:self forKeyPath:@"theArray" options:0 context:NULL];
Fügen Sie dann ein Objekt wie folgt in das Array ein:
[myObj.theArray addObject:NSString.string];
Eine ObservValueForKeyPath ... -Nachricht wird nicht gesendet. Folgendes sendet jedoch die richtige Benachrichtigung:
[[myObj mutableArrayValueForKey:@"theArray"] addObject:NSString.string];
Dies liegt daran, dass mutableArrayValueForKey
ein Proxy-Objekt zurückgegeben wird, das sich um die Benachrichtigung von Beobachtern kümmert.
Aber sollten die synthetisierten Accessoren ein solches Proxy-Objekt nicht automatisch zurückgeben? Wie kann ich das umgehen [super mutableArrayValueForKey...]
? Soll ich einen benutzerdefinierten Accessor schreiben, der nur aufgerufen wird ?