153 votes

Que signifie le symbole @ représentent en objective-c ?

J’apprends l’objectif-c et garder se cogner dans le symbole @. Il est utilisé dans différents scénarios, par exemple au début d’une chaîne ou pour synthétiser des méthodes d’accesseur.

Ce qui a fait le symbole @ signifie en objective-c ?

162voto

Chris Hanson Points 34485

L' @ de caractères n'est pas utilisé en C ou C++ identifiants, il est donc utilisé pour introduire Objective-C les mots clés du langage de façon à ne pas entrer en conflit avec les autres langues' des mots-clés. Cela permet à l' "Objectif" de la langue librement mélanger avec le C ou le C++.

Ainsi, à quelques exceptions près, toutes les fois que vous verrez @ dans certains code Objective-C, vous êtes à la recherche Objective-C, des constructions plutôt que C ou C++ constructions.

Les principales exceptions sont id, Class, nil, et Nil, qui sont généralement traités comme des mots clés du langage, même si elles peuvent aussi avoir un typedef ou #define derrière eux. Par exemple, le compilateur ne fait traiter id spécialement en termes de type de pointeur règles de conversion, il s'applique aux déclarations, ainsi qu'à la décision de générer GC écrire des obstacles.

D'autres exceptions sont in, out, inout, oneway, byref, et bycopy; ceux-ci sont utilisés en tant que classe de stockage des annotations sur les paramètre de méthode et les types de retour pour faire des Objets Distribués plus efficace. (Ils deviennent partie intégrante de la signature de la méthode disponible à partir de l'exécution, qui NE peut regarder à déterminer la meilleure façon de sérialiser une transaction.) Il y a aussi les attributs au sein d' @property des déclarations, copy, retain, assign, readonly, readwrite, nonatomic, getter, et setter; ceux qui ne sont valables que dans la section attribut d'un @property déclaration.

69voto

thelsdj Points 3344

D' Objective-C Tutoriel: Le Symbole @ , la raison pour laquelle il est sur le devant de divers mots-clés:

À l'aide de @ devrait faciliter le boulon de l'Objectif compilateur C sur à un compilateur C. Parce que le @ n'est pas valide dans n'importe quel contexte dans C à l'exception d'un littéral de chaîne, le générateur de jetons (un des premiers et simple étape dans le compilateur) pourrait être modifié afin de simplement regarder pour le caractère " @ " en dehors d'une constante chaîne (le tokenizer comprend les littéraux de chaîne, de sorte qu'il est en mesure de distinguer ce). Quand @ est rencontré le tokenizer mettrais le reste du compilateur dans "Objective-C mode". (L'Objective-C analyseur serait responsable du retour de l'compilateur normal C en mode lorsqu'il détecte la fin du code Objective-C).

Aussi quand on les voit en face d'un littéral de chaîne, il fait un NSString plutôt que d'un " char*", dans C.

27voto

Van Nguyen Points 1664

De Macrumors: tutoriel Objective-C , lorsqu'il est devant un littéral de chaîne:

Il y a aussi @ "" littéraux NSString. Il s'agit essentiellement d'un raccourci pour la méthode NSString + stringWithUTF8String.

Le @ ajoute également un support Unicode aux chaînes C.

19voto

pabloelustondo Points 276

À partir du manuel:

Objective-C cadres ne sont généralement pas utiliser de style C à cordes. Au lieu de cela, ils passent des chaînes autour de NSString objets.

La classe NSString fournit un objet wrapper pour les chaînes a tous les avantages que vous attendez, y compris la mémoire intégrée de gestion pour le stockage de l'arbitraire des chaînes de longueur, support de l'Unicode, printf style utilitaires de formatage, et plus encore. Parce que ces chaînes sont utilisé souvent, l'Objective-C fournit une notation abrégée pour la création de NSString objets de valeurs constantes. Pour utiliser ce raccourci, tout ce que vous avez à faire est de précéder normale de la chaîne de caractères entre guillemets avec l' symbole@, comme illustré dans les exemples suivants:

NSString *myString = @"My String\n";
NSString *anotherString = [NSString stringWithFormat:@"%d %@", 1, @"String"];

0voto

Joe Tyman Points 733

@ Est comme mentionné précédemment pour les littéraux de chaîne. Vous ne devriez pas avoir à échapper un caractère dans un littéral de chaîne si vous avez le @. Ceci est également dans une variété de langue. Cela peut également être utilisé pour optimiser votre compilateur pour aller et venir avec C / C ++ et Objective C.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X