En mi opinión, esto funciona de manera similar al mecanismo retenerCount. No puede estar seguro de que en el momento actual tenga su observador. Incluso si marca : self.observationInfo : no puede estar seguro de que tendrá / no tendrá observadores en el futuro.
Como retenerCount . Quizás el método observaciónInfo no es exactamente ese tipo de inútil, pero solo lo uso con fines de depuración.
Como resultado, solo tiene que hacerlo como en la administración de memoria. Si agregó un observador, simplemente retírelo cuando no lo necesite. Como usar los métodos viewWillAppear / viewWillDisappear, etc. P.ej:
-(void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[self addObserver:nil forKeyPath:@"" options:NSKeyValueObservingOptionNew context:nil];
}
-(void) viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self removeObserver:nil forKeyPath:@""];
}
Y necesita algunas comprobaciones específicas: implemente su propia clase que maneja una variedad de observadores y úsela para sus comprobaciones.
addObserver:
enviewWillAppear:
y correspondientementeremoveObserver:
enviewWillDisappear:
las llamadas fueron emparejados correctamente. Tengo que hacer una solución rápida, así que voy a implementar la solución try-catch y dejar un comentario para investigar más a fondo la causa.