2011-10-20 14 views
7

Estoy usando la relación de valores-clave. Tengo object_1 (NSManagedObject) y algunos otros objetos-observadores. Cuando elimino object_1 del contexto del objeto gestionado, mi programa falla.KVO: ¿Puedo eliminar todos los observadores del objeto concreto

CoreData: error: Error grave de la aplicación. Se capturó la excepción durante el procesamiento de cambio de Datos principales. Esto suele ser un error dentro de un observador de NSManagedObjectContextObjectsDidChangeNotification.

¿Puedo poner algo en el método dealloc (o en otro lugar) para eliminar a todos los observadores de object_1? ¿O la única decisión adecuada es enviar notificaciones justo cuando estoy a punto de eliminar el objeto_1 del contexto del objeto gestionado y escuchar esta notificación por otros objetos (para eliminarse de los observadores del objeto_1)?

Respuesta

7

Debe asegurarse de que sus observadores sean eliminados antes de que su objeto sea desasignado. Esta es una desventaja de Key Value Observer.

Como sugiere, una forma de hacerlo es a través de la eliminación desencadenada desde su método dealloc. Obviamente, no puede saber quién tiene observadores en su objeto, pero igual deberá notificarlos.

Describo lo que necesita hacer, pero tal vez solo mire la respuesta de bj-homer en la pregunta When should I remove observers? Error about deallocating objects before removing observers.

Si esto es lo que buscas, solo tienes que votar. Si no, vote abajo aquí. Espero que ayude, de todos modos.

Cuestiones relacionadas