Une classe a une propriété (et une var d'instance) de type NSMutableArray avec des accesseurs synthétisés (par l'intermédiaire de @property
). Si vous observez ce tableau en utilisant :
[myObj addObserver:self forKeyPath:@"theArray" options:0 context:NULL];
Et ensuite insérer un objet dans le tableau comme ceci :
[[myObj theArray] addObject:[NSString string]];
Une notification observeValueForKeyPath... est pas envoyé. Cependant, l'exemple suivant envoie la notification appropriée :
[[myObj mutableArrayValueForKey:@"theArray"] addObject:[NSString string]];
Cela s'explique par le fait que mutableArrayValueForKey
renvoie un objet proxy qui se charge de notifier les observateurs.
Mais les accesseurs synthétisés ne devraient-ils pas retourner automatiquement un tel objet proxy ? Quelle est la meilleure façon de contourner ce problème ? Dois-je écrire un accesseur personnalisé qui invoque simplement l'option [super mutableArrayValueForKey...]
?