Dans votre interface, vous pouvez le déclarer officiellement une variable d'instance qui est entre les accolades, ou via @property
à l'extérieur de l'appareil dentaire, ou les deux. De toute façon, ils deviennent des attributs de la classe. La différence est que si vous déclarez @property
, alors vous pouvez mettre en œuvre à l'aide de @synthesize
, ce qui auto-codes votre getter/setter pour vous. L'auto-coder setter initialise les nombres entiers et décimaux à zéro, par exemple. SI vous déclarez une variable d'instance, et NE spécifient PAS de correspondant en @property
, alors vous ne pouvez pas utiliser @synthesize
et doit écrire votre propre getter/setter.
Vous pouvez toujours remplacer l'auto-codé getter/setter en spécifiant votre propre. Ceci est généralement réalisé avec l' managedObjectContext
de la propriété qui est paresseusement chargé. Ainsi, vous déclarez votre managedObjectContext
comme une propriété, mais aussi à écrire une -(NSManagedObjectContext *)managedObjectContext
méthode. Rappelons qu'une méthode, qui a le même nom qu'une variable d'instance ou de la propriété est le "getter" la méthode.
L' @property
déclaration de méthode vous permet également d'autres options, comme retain
et readonly
, la variable d'instance de la déclaration de la méthode ne fonctionne pas. Fondamentalement, ivar
à l'ancienne manière, et @property
s'étend et il fait amateur/plus facile. Vous pouvez vous référer soit à l'aide de l'auto. préfixe, ou pas, il n'a pas d'importance tant que le nom est unique à cette classe. Sinon, si votre classe mère a le même nom d'une propriété que vous, alors vous avez à dire comme l'auto.nom ou super.nom afin de spécifier le nom de qui vous parlez.
Ainsi, vous verrez de moins en moins de gens déclarer ivar
s entre les accolades, et, au lieu de se décaler juste précisant @property
, et ensuite de faire @synthesize
. Vous ne pouvez pas faire @synthesize
de votre mise en œuvre sans une correspondante @property
. Le Synthétiseur ne sait quel type d'attribut est de l' @property
de la spécification. Le synthétiser déclaration permet également de renommer propriétés, de sorte que vous pouvez vous référer à la propriété par un nom (abrégée) à l'intérieur de votre code, mais à l'extérieur dans la .h fichier utiliser le nom complet. Cependant, avec le vraiment cool de saisie semi-automatique que XCode a maintenant, c'est moins d'un avantage, mais il est toujours là.
Espérons que cela aide à dissiper la confusion et la désinformation qui est flottant autour de là-bas.