2010-05-07 4 views
0

Y at-il une raison pour laquelle l'astérisque est à côté du type d'objet dans ce code? Je suis un peu confus par la façon dont je vois cela utilisé. Quelques fois il ressemble à ceci:Mise en forme de code lors de l'utilisation de pointeurs

NSString* stringBefore; 

et parfois comme ceci:

NSString *stringBefore; 

Y at-il une différence? Ou un bon ou un mauvais moyen de le faire?

Merci

+0

duplication possible de http://stackoverflow.com/questions/2452335/asterisk-sometimes-on-variable-type-sometimes-on-variable-name-pourquoi –

Répondre

4

Cela ne fait aucune différence.

C'est juste un indicateur de la compétence de l'auteur dans l'écriture et la lecture d'Objective-C. La norme traditionnelle consiste à écrire comme:

NSString *stringBefore; 
+0

Vous pouvez être bien versé et choisir de ne pas suivre la norme . – progrmr

+0

Cela me semble logique jusqu'à ce que l'auteur en fasse un: UISwitch * whichSwitch = (UISwitch *) expéditeur; La parenthèse sorte de le jeter pour moi. Pourquoi l'astérisque est-il groupé avec le type? –

+0

Parce qu'il fait partie du type - comme dans, un "pointeur vers un NSString". Et les programmeurs qui ne suivent pas les standards sont appelés "mauvais programmeurs" - à moins qu'ils n'aient de bonnes raisons, bien sûr. –

2

Il n'y a pas de différence.

10

J'utilise le * près du nom de variable et non le type, car si vous déclarez quelque chose comme:

int *i, j; 

i sera un pointeur vers int , et j sera un int.

Si vous avez utilisé l'autre syntaxe:

int* i, j; 

vous peut penser que les deux i et j sont des pointeurs quand ils ne sont pas. Cela dit, je n'utilise ni ne recommande de déclarer un pointeur et une variable sans pointeur dans la même ligne, comme dans cet exemple.