Question

J'apprends l'objectif-c et je continue de tomber sur le symbole @.Il est utilisé dans différents scénarios, par exemple en début de chaîne ou pour synthétiser des méthodes d'accès.

Que signifie le symbole @ dans objective-c ?

Était-ce utile?

La solution

Le @ Le caractère n'est pas utilisé dans les identifiants C ou C++, il est donc utilisé pour introduire les mots-clés du langage Objective-C d'une manière qui n'entrera pas en conflit avec les mots-clés des autres langages.Cela permet à la partie « Objectif » du langage de se mélanger librement avec la partie C ou C++.

Ainsi, à quelques exceptions près, chaque fois que vous voyez @ dans certains codes Objective-C, vous examinez les constructions Objective-C plutôt que les constructions C ou C++.

Les principales exceptions sont id, Class, nil, et Nil, qui sont généralement traités comme des mots-clés de langue même s'ils peuvent également avoir un typedef ou #define derrière eux.Par exemple, le compilateur traite réellement id spécialement en termes de règles de conversion de type de pointeur, il s'applique aux déclarations, ainsi qu'à la décision de générer ou non des barrières d'écriture GC.

D'autres exceptions sont in, out, inout, oneway, byref, et bycopy;celles-ci sont utilisées comme annotations de classe de stockage sur les paramètres de méthode et les types de retour pour rendre les objets distribués plus efficaces.(Ils font partie de la signature de méthode disponible à partir du runtime, que DO peut examiner pour déterminer la meilleure façon de sérialiser une transaction.) Il existe également des attributs dans @property déclarations, copy, retain, assign, readonly, readwrite, nonatomic, getter, et setter;ceux-ci ne sont valables que dans la section attribut d'un @property déclaration.

Autres conseils

Depuis Tutoriel Objective-C :Le symbole, la raison pour laquelle il figure au début de divers mots-clés :

L'utilisation de @ devrait faciliter l'intégration d'un compilateur Objective-C sur un compilateur C existant.Étant donné que le @ n'est valide dans aucun contexte en C, à l'exception d'un littéral de chaîne, le tokenizer (une étape simple et précoce du compilateur) pourrait être modifié pour rechercher simplement le caractère @ en dehors d'une constante de chaîne (le tokenizer comprend les littéraux de chaîne , il est donc en mesure de le distinguer).Lorsque @ est rencontré, le tokenzer mettrait le reste du compilateur en "mode objectif-C". (L'analyseur Objective-C serait responsable du retour du compilateur en mode C ordinaire lorsqu'il détecte la fin du code objectif-C).

De plus, lorsqu'il est vu devant une chaîne littérale, cela crée une NSString plutôt qu'un 'char *' en C.

Depuis Macrumeurs :Tutoriel Objective-C, devant une chaîne littérale :

Il existe également des littéraux @"" NSString.Il s’agit essentiellement d’un raccourci pour la méthode +stringWithUTF8String de NSString.

Le @ ajoute également la prise en charge Unicode aux chaînes C.

Du manuel:

Les frameworks Objective-C n'utilisent généralement pas de chaînes de style C.Au lieu de cela, ils passent des cordes en tant qu'objets NSString.

La classe NSString fournit un emballage d'objet pour les chaînes qui présente tous les avantages auxquels vous vous attendez, y compris la gestion de la mémoire intégrée pour le stockage des chaînes de longueur arbitraire, la prise en charge de Unicode, les utilitaires de formatage de style printf, etc.Étant donné que ces chaînes sont couramment utilisées, Objective-C fournit une notation raccourci pour la création d'objets NSString à partir de valeurs constantes.Pour utiliser ce sténographie, tout ce que vous avez à faire est de précéder une chaîne normale et à double qualité avec le symbole @, comme indiqué dans les exemples suivants:

NSString *myString = @"My String\n";
NSString *anotherString = [NSString stringWithFormat:@"%d %@", 1, @"String"];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top