2009-08-11 4 views
0

Depuis que j'ai commencé le développement de l'iPhone, j'ai été un peu confus quant à la meilleure façon d'accéder aux données en tant que membre d'une classe.Quelle est la différence entre l'utilisation d'accesseurs obj-c et l'utilisation de la syntaxe à points?

Disons que j'ai une classe appelée MyClass, et ce que j'ai:

@interface MyClass : NSObject { 
    int myInt; 
} 

@property (nonatomic, assign) int myInt; 

Dans la mise en œuvre, il est préférable de le faire:

myObject.myInt = 1; 

Ou cela?

[myObject setMyInt:1]; 

Cela vaut également pour la lecture de la valeur.

int newInt = myObject.myInt; 

vs.

int newInt = [myObject myInt]; 
+1

Presque un duplicata exact de http://stackoverflow.com/questions/1249392/ demandé juste 2 jours avant. Les réponses à cette question sont plus complètes et utiles que celles d'ici. Il serait préférable de faire une recherche plus complète avant de demander, mais 2 questions sont meilleures que 0 questions. :-) –

Répondre

8

Peu importe, ce sont la même chose. La syntaxe de point est une commodité qui est là pour vous d'utiliser, et j'ai l'impression que cela rend votre code plus propre. Le seul cas où je trouve que l'utilisation de la syntaxe par points envoie un avertissement ou des erreurs du compilateur est si vous avez un objet id, même si vous savez qu'il a cette propriété.

id someReturnedObject = [somethingObject someMysteryObjectAtIndex:5]; 
int aValue = 0; 
aValue = someReturnedObject.value; // warning 
aValue = [someReturnedObject value]; // will just do it 
0

syntaxe Dot en Objective-C est un raccourci pour l'essentiel à l'aide des méthodes d'accès. Le message est toujours envoyé via la méthode accesseur. J'espère que cela répond à votre question

2

Le type de l'objet est vérifié statiquement avec le. syntaxe, mais pas avec la syntaxe []. Cela signifie que vous ne pouvez pas utiliser. Si le type de l'objet n'est pas spécifié, et qu'il est utile de l'utiliser quand c'est le cas, le compilateur vous aidera plus.

Questions connexes