2010-11-30 10 views
0

J'ai lu que _ (soulignement) est seulement utilisé pour dire que la variable/méthode/classe est pour l'utilisation de l'API seulement et ne devrait pas être utilisé par d'autres programmeurs.Quelle est la différence entre "_" et "__" en Objective-C?

Qu'en est-il de __ (double trait de soulignement)?

Dans cet exemple __block BOOL found = NO;

à partir du bloc d'Apple Docs à propos Objets.

Aussi, quelqu'un peut-il m'aider à comprendre le concept de pointeur-à-pointeurs? **var J'ai lu quelques réponses à ce sujet mais je n'ai pas vraiment compris. Quand et comment devrais-je l'utiliser?

Répondre

5

Le trait de soulignement simple est traditionnellement utilisé pour les API privées (méthodes et parfois ivars). Leur but principal est d'empêcher les collisions de noms.

__block est un mot-clé pour la nouvelle API de blocs. En général, les mots-clés double underscore sont pour le compilateur.

Pour pointeurs de pointeurs du NSError est un bon exemple: Quand une méthode veut retourner un nouvel objet NSError dans le cadre de ses paramètres (valeur non retour), vous avez besoin d'un pointeur vers une variable de type NSError *, de sorte que vous peut l'assigner. Avec un simple pointeur, vous pouvez seulement accéder à l'objet, mais ne pas (ré) l'assigner.

+0

Super, ça m'a vraiment aidé. Merci! –