iOS Observation d'une propriété d'une sous-classe NSObject


Exemple

La plupart des fonctionnalités KVO et KVC sont déjà implémentées par défaut sur toutes les sous-classes NSObject .

Pour commencer à observer une propriété nommée firstName d'un objet nommé personObject faites-le dans la classe d'observation:

[personObject addObserver:self
               forKeyPath:@"firstName"
                  options:NSKeyValueObservingOptionNew
                  context:nil];

L'objet que l' self dans le code ci - dessus fait référence à recevra alors un observeValueForKeyPath:ofObject:change:context: un message chaque fois que les changements de chemin clés observées.

- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary<NSString *,id> *)change
                       context:(void *)context
{
    NSLog(@"new value of %@ is: %@", keyPath, change[NSKeyValueChangeNewKey]);
}

"Key path" est un terme KVC. NSObject sous-classes NSObject implémentent la fonctionnalité KVC par défaut.

Une variable d'instance nommée _firstName sera accessible par le chemin d'accès de la clé @"firstName" .

Une méthode de lecture du nom firstName sera appelé lors de l' accès au @"firstName" chemin de clé, quelle que soit l'existence d' une _firstName variable d'instance ou setFirstName méthode setter.