Question

La différence entre ces deux lignes de code est que la seconde est conforme à la norme KVO et que la première ne l'est pas?

[person setValue:tempPerson.name forKey:@"name"];
person.name = tempPerson.name;

La raison pour laquelle je pose cette question est parce que je dois mettre à jour 60 attributs sur plus de 500 objets. Je ne veux pas de notifications KVO pour plus d'une poignée d'attributs.

J'utilise NSFecthedResultsController pour mon UITableView et je ne souhaite pas déclencher une quantité excessive de setNeedDisplay sur les cellules.

Était-ce utile?

La solution

Il n'y a pas de différence entre les deux lignes en ce qui concerne l'observation de la valeur clé. Les deux déclenchent des notifications KVO par défaut. Vous pouvez cependant remplacer ce comportement. Extrait du guide de programmation KVO d'Apple:

  

Vous pouvez contrôler les notifications automatiques de l'observateur pour les propriétés de votre sous-classe en implémentant la méthode de classe automaticNotifiesObserversForKey: . Les sous-classes peuvent tester la clé passée en tant que paramètre et renvoyer YES si la notification automatique doit être activée, NO si elle doit être désactivée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top