Est-ce que les setters d'Apple (ou des @property générées) testent le vrai changement

Bonjour ! 


 


Imaginons que j'ai une @property MyObject * myObject  et que self.myObject soit égal à  aObject.


 


Que se passe-t-il si je refais self.myObject = aObject ?


J'imagine que le KVO va être activé. Mais en plus de ça, le système va-t-il faire quelque chose ?


 


Merci !


Réponses

  • CéroceCéroce Membre, Modérateur
    Je ne connais pas la réponse*, mais il s'agit d'un détail d'implémentation. Si ton système est basé là -dessus, je te conseille de changer de méthode.

    *mais je parierais qu'aucune notification n'est émise.
  • colas_colas_ Membre
    juin 2014 modifié #3

    Merci !


     


    Non, mon système n'est pas basé là -dessus, mais je voulais être sûr que quand on fait un faux setting, comme celui-ci, rien de très lourd n'était déclenché.


  • AliGatorAliGator Membre, Modérateur
    Si je ne m'abuse, l'implémentation interne est faite de sortie que si oldValue==newValue alors il ne se passe rien. Donc pas de KVO déclenché.

    Par contre si [oldValue isEqual:newValue] mais que oldValue!=newValue (deux objets distincts même s'ils sont considérés égaux de par leur contenu, comme [NSString stringWithFormat:@%@-Tata",@Toto] et @Toto-Tata qui sont deux instances différentes même si leur contenu est identique) alors ça va générer le KVO.
Connectez-vous ou Inscrivez-vous pour répondre.