En Objective-C, self.property
est property accès, pas l'accès direct à la variable d'instance. C'est du sucre syntatique pour [self property]
ou [self setProperty:]
, et a donc la sémantique d'un message. L'exécution moderne d'Objective-C peut synthétiser une variable d'instance de sauvegarde (du même nom que la propriété), mais vous pouvez sauvegarder une propriété avec une variable d'instance avec un nom différent ou pas du tout. En d'autres termes,
self.property = foo;
id bar = property
et
property = foo;
id bar = property;
ne sont pas du tout la même chose. C'est généralement une mauvaise idée de mélanger l'accès direct et l'accès aux propriétés (à l'exception du fait que vous devriez accéder aux ivars directement dans les méthodes -init
et -dealloc
) car vous risquez de vous heurter aux règles de gestion de la mémoire.
duplication possible de [iPhone différent entre auto et variable normale] (http://stackoverflow.com/questions/536388/iphone-different-between-self-and-normal-variable) –