2010-11-23 21 views
4

Si j'utilise @synthesize foo;, quelle est la différence entre les éléments suivants:Objective-C: syntaxe de message vs. syntaxe de point; quelle est la différence?

// message syntax 
[myObj setFoo:5]; 
[myObj foo]; 

et

// dot syntax 
myObj.foo = 5; 
myObj.foo; 

J'aime la cohérence de la syntaxe des points mais je ne sais pas si ça fait quelque chose que je devrait être je préoccupé par.

Toute information supplémentaire serait d'une grande aide.

Répondre

12

Il n'y a pas de différence fonctionnelle entre l'utilisation de la syntaxe à points et l'utilisation de la syntaxe de message. Je trouve que l'utilisation de la syntaxe des messages est plus cohérente avec le langage dans son ensemble et que la syntaxe des points a été implémentée par commodité pour les programmeurs qui venaient des langues qui les utilisaient (on pense à Java).

Tout ce que je demande est: Quel que soit celui que vous choisissez, soyez cohérent avec lui. Ne pas mélanger et assortir les régleurs de propriétés uniques! (Les setters à arguments multiples sont évidemment exemptés).

+2

convenu. Stick avec l'un ou l'autre. Je préfère utiliser la syntaxe à points car elle me dit que je fais quelque chose qui retiendra ou copiera probablement un objet. –

+0

Je seconde ça! Mais j'essaie aussi d'utiliser la notation par points pour voir d'un coup d'œil quand le membre est défini comme une propriété par rapport à une méthode. – jtalarico

+0

"Ne pas mélanger et assortir" est un peu inutile. Si vous utilisez la notation par points pour définir toutes vos propriétés et que vous devez ensuite ajouter un setter qui prend deux arguments, que faites-vous? –

3

Ce sont les mêmes.

La syntaxe point est utilisé pour signifier l'accès des @property « s que vous pouvez aussi accès via:

[myObject setValue: [NSNumber numberWithIntValue:5] forKey:@"foo"]; 
[myObject valueForKey:@"foo"]; 

Mais en substance les appels sont les mêmes.