Estoy tratando de utilizar la observación de valores-clave en una de mis clases. Registré los observadores en el método init y los eliminé/eliminé en el dealloc, pero aparece el siguiente error que parece ocurrir antes de que se llame mi método dealloc, de acuerdo con mis impresiones de depuración.¿Cuándo debería eliminar observadores? Error al desasignar objetos antes de eliminar observadores
Una instancia 0x583870 de la clase TekkPoint se está desasignando mientras los observadores de valores clave aún están registrados con ella. La información de observación se está filtrando, e incluso se puede unir erróneamente a algún otro objeto. Establezca un punto de interrupción en NSKVODeallocateBreak para detenerse aquí en el depurador. Aquí está la información observación actual: ( Contexto: 0x0, propiedad: 0x536400> Contexto: 0x0, propiedad: 0x55aba0> )
¿Hay una manera particular, la haga quitar los observadores? ¿O tal vez un lugar en particular en el que debería eliminarlos?
De acuerdo con este question estoy haciendo las cosas bien, pero ¿por qué me sale este mensaje de error?
Aquí es mi rutina dealloc:
- (void)dealloc {
// Remove all observers.
for (NSString *path in [TekkPoint observedPaths]) {
[self removeObserver:[option_ tChart]
forKeyPath:path];
}
[description_ release];
[weight_ release];
[super dealloc];
}
Una cosa a destacar que podría ser extraño en mi aplicación es que estoy añadiendo y quitando los observadores del el observado, podría causar este mi problema?
hombre esta respuesta acaba de salvar mi vida, usted el rey –
simple y fácil. +1 – govi
Otra opción es crear una referencia fuerte al objeto observado en el objeto que lo observa. De esta forma, el objeto observado no se liberará hasta que el observador también sea liberado. – Avario