J'essaie d'implémenter une valeur de clé de sécurité en observant les mots de passe. Supposons que j'ai un objet de modèle de données nommé person
qui a une propriété workplace
. Le workplace
à son tour un address
bien que je souhaite observer donc je mis en place la valeur clé observation à l'appel suivant:Valeur de la clé de sécurité Observation des données clés
[person addObserver:theObserver
forKeyPath:@"workplace.address"
options:NSKeyValueObservingOptionNew
context:NULL];
Cela fonctionne bien jusqu'à ce que la personne ne change pas le lieu de travail. Dès que cela se produit:
person.workplace = newWorkplace;
le système KVC bloque l'application correctement en disant que « oldAddress a été désallouée tandis que les observateurs de valeur clés étaient encore enregistrées avec elle ». (étant oldAddress l'adresse du lieu de travail précédent).
Malheureusement je ne peux pas modifier la mise en œuvre de la classe d'objet « personne » pour informer l'observateur que le lieu de travail va disparaître. Y a-t-il un modèle pour éviter ce genre de crash? Peut-être que l'on peut obtenir d'autres notifications? Comment le keypath est-il traversé dans le cas de KVC et avez-vous accès à cette chaîne?