utilise "soi" toujours nécessaire dans l'objectif-c ou peut-être juste une bonne pratique? Je suis allé de l'utiliser tout le temps pour ne pas l'utiliser du tout et je ne semble pas vraiment remarquer une différence. N'est-ce pas simplement impliqué quand même? P>
5 Réponses :
Ce n'est pas nécessaire pour faire référence à des variables d'instance. Il est nécessaire lorsque vous souhaitez transmettre une référence de l'objet actuel à une autre méthode, comme lors de la définition d'un délégué:
[self doMethod]
Lors de l'attribution de variable d'instance, il est nécessaire d'utiliser soi-même si vous comptez sur le setter pour copier ou conserver.
Oui, car l'objectif c n'a pas d'appels de méthode tels que C / C ++ mais utilise l'envoi de message, soi-même pour des contextes tels que P>
[auto dosomething]; et self.myproperty; p>
sont nécessaires. p>
Si vous accédez à un ivar, vous n'êtes pas nécessaire. P>
espère que cela aide. p>
-cv p>
Pour faire face aux variables, cela dépend. Si vous souhaitez utiliser un getter ou un réglage synthétisé, utilisez la notation de points avec soi-même.
self.someProperty = @"blah"; //Uses the setter someProperty = @"blah"; //Directly sets the variable
Notez que vous n'avez pas à utiliser la notation du point. Mais beaucoup d'entre nous comme ça. Je vous avertit que: la notation de points a presque l'air d'accéder à un champ d'une structure non pointée, par opposition à l'envoi d'un message à un objet. Parce que les objets Objective-C sont des pointeurs vers des structures, self.someivar = @ "this" code> ne peut pas accéder à une variable d'instance; Vous utiliseriez auto-> quelqueivar = @ "this" code> (le bit auto -> code> est inutile dans la mise en œuvre d'une classe). Ainsi, utilisez la notation de points si vous comprenez ce que vous faites et ce que vous ne faites pas.
auto code> est nécessaire si vous souhaitez qu'un objet envoie des messages à, eh bien, il auto code>. Il est également occasionnellement bénéfique d'accéder aux propriétés via des getters / setters, auquel cas vous aurez également besoin d'utiliser auto code>, comme dans auto.propertyname code> ou auto. Nom de propriété = valeur code>. (Celles-ci ne sont pas équivalentes au PropertyName code> ou PropertyName = valeur code>. P>
Et si j'utilise la notation de message plutôt que de la notation de points? Est-ce que ça importe?
réponse vraiment claire, car dans de nombreux tutoriels sur Web disent que c'est la même chose, merci de répondre
Actuellement, il n'est pas nécessaire à chaque fois, mais c'est une bonne pratique, car il est plus facile pour les autres personnes de lire votre code. P>
Et il est nécessaire lorsque vous avez des objets avec le même nom dans différentes classes, alors le travail de clé "Self" indiquera à votre logiciel que vous référenciez l'objet dans cette même classe. P>
Cela arrive généralement dans des projets plus importants. P>
Voulez-vous dire partir de 'Self.Property = valeur' to Just 'Property = Value'?