Una clase tiene una propiedad (y var de instancia) de tipo NSMutableArray con descriptores de acceso sintetizados (via @property
). Si observa esta matriz usando:
[myObj addObserver:self forKeyPath:@"theArray" options:0 context:NULL];
Y luego inserte un objeto en la matriz como este:
[myObj.theArray addObject:NSString.string];
Un observeValueForKeyPath ... notificación no se ha enviado. Sin embargo, lo siguiente envía la notificación adecuada:
[[myObj mutableArrayValueForKey:@"theArray"] addObject:NSString.string];
Esto se debe a que mutableArrayValueForKey
devuelve un objeto proxy que se encarga de notificar a los observadores.
Pero, ¿no deberían los accesores sintetizados devolver automáticamente tal objeto proxy? ¿Cuál es la forma correcta de evitar esto? ¿Debería escribir un descriptor de acceso personalizado que simplemente invoque [super mutableArrayValueForKey...]
?