thumbnail ios cocoa-touch key-value-observing automatic-ref-counting

ios - ion thumbnail size



KVO y ARC cómo eliminarObserver (3)

¿Cómo se elimina un observador de un objeto bajo ARC ? ¿Acabamos de agregar al observador y olvidarnos de eliminarlo? Si ya no gestionamos la memoria manualmente, ¿dónde renunciamos a la observación?

Por ejemplo, en un controlador de vista:

[self.view addObserver:self forKeyPath:@"self.frame" options:NSKeyValueObservingOptionNew context:nil];

Anteriormente, llamaba a removeObserver: en el método dealloc del controlador de dealloc .


Aún puede implementar -dealloc en ARC, que parece ser el lugar apropiado para eliminar la observación de valores clave. Simplemente no llama a [super dealloc] desde este método más.

Si estaba anulando -release antes, estaba haciendo las cosas mal.


Lo hago con este código

- (void)dealloc { @try{ [self.uAvatarImage removeObserver:self forKeyPath:@"image" context:nil]; } @catch(id anException) { //do nothing, obviously it wasn''t attached because an exception was thrown } }


Elsewhere del desbordamiento de la pila, Chris Hanson recomienda utilizar el método de finalización para este fin y la implementación de un método de invalidación separado para que los propietarios puedan decirles a los objetos que están terminados. En el pasado, he encontrado que las soluciones de Hanson están bien pensadas, así que iré con eso.