He una ViewController crear una instancia de un UIView, y luego registrar un observador con la instancia, de tal manera queobserveValueForKeyPath no siendo llamado
logoAnimation = [[MainLogoAnimation alloc] init];
[logoAnimation addObserver:self forKeyPath:@"patrocinioDidLoad" options:(NSKeyValueObservingOptionNew|NSKeyValueObservingOptionOld) context:nil];
a continuación, en el mismo archivo, que tienen:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
NSLog(@"%@ \n %@ \n %@ \n ",keyPath,object,change);
}
Pero, aunque he comprobado y una doble comprobación de que logoAnimation.patrocinioDidLoad ha cambiado, observeValueForKeyPath nunca se llama ...
me estoy perdiendo algo?
¡Gracias por la ayuda!
Antonio
gracias, usted ha resuelto mi problema Para mí, algo así como logoAnimation = [[MainLogoAnimation alloc] init]; no funcionó, pero auto.logoAnimation = [[MainLogoAnimation alloc] init] autorelease]; trabajos. – ssj
Entonces, ¿siempre tiene que poner "self" en el frente si quiere usar los setters y getters hechos por @synthesize? – gonzobrains
¡GUAU! Después de horas de probar mi código para descubrir por qué no se llamaba alguna vez a obserValueForKeyPath, finalmente descubrí que era por eso. ¿Por qué Apple no lo audaz en los documentos que uno debe pasar por el setter (y así usar la propiedad en lugar del ivar) para que funcione? – ArtOfWarfare