2009-10-26 15 views
13

Me preguntaba qué devolverían los parámetros de este método.Parámetros de observeValueForKeyPath: ofObject: change: context:

- (void) observeValueForKeyPath:(NSString *)keyPath 
         ofObject:(id)object 
         change:(NSDictionary *)change 
         context:(void *)context; 

En the documentation Dice

keyPath La ruta de la clave, en relación con objeto, al valor que ha cambiado.

objeto Objeto de origen de la clave keyPath.

cambio Un diccionario que describe los cambios que se han hecho al valor de la propiedad en la clave de ruta keyPath relativa a objetar.

contexto el valor que se proporciona cuando el receptor se registró a recibir clave-valor de observación notificaciones.

Podría explicar estos parámetros, ya que la documentación me parece un poco difícil de entender.

Respuesta

13

Cuando se registró para las notificaciones KVO ha especificado una ruta de acceso de clave a addObserver:. El parámetro keypath simplemente le devuelve este valor. El parámetro de objeto es el objeto al que envió el mensaje addObserver:. Estos se pueden usar para diferenciar entre notificaciones KVO de diferentes keypaths/objects (por ejemplo, si está observando valores múltiples).

change es un diccionario que contiene información sobre la naturaleza del cambio de valor. Puede contener el nuevo valor o el valor anterior o, para muchas relaciones, puede contener los índices que cambiaron. Su contenido se describe mejor en el KVO Programming Guide en la sección Notificación de recepción de un cambio.

Cuando se registra para la notificación, también puede especificar un valor de contexto. El último valor es simplemente este valor devuelto a usted. Si no tiene ninguna información específica del contexto, es apropiado pasar el nil al addObserver:.

Para una buena discusión sobre algunas deficiencias del sistema de MVA (y algunas clases de ayuda para hacer frente a ellos), ver Mike Ash's great blog post

+1

Sólo tener en cuenta sobre el enlace de MVA, se ha trasladado a aquí: https://developer.apple .com/library/mac/documentation/Cocoa/Conceptual/KeyValueObserving/KeyValueObserving.html –

Cuestiones relacionadas