J'apprends l'objectif-c et je continue de heurter 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'accesseurs.
Que signifie le symbole @ dans objective-c?
objective-c
Benoît Cohen
la source
la source
Réponses:
Le
@
caractère n'est pas utilisé dans les identificateurs C ou C ++, il est donc utilisé pour introduire des mots-clés de langage Objective-C d'une manière qui n'entre 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 du code Objective-C, vous regardez des constructions Objective-C plutôt que des constructions C ou C ++.Les principales exceptions sont
id
,Class
,nil
etNil
, qui sont généralement traités comme des mots clés du langage , même si elles peuvent aussi avoir untypedef
ou#define
derrière eux. Par exemple, le compilateur traite en faitid
spécialement en termes de règles de conversion de type pointeur qu'il applique aux déclarations, ainsi que de la décision de générer des barrières d'écriture GC.D' autres exceptions sont
in
,out
,inout
,oneway
,byref
etbycopy
; elles 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 la méthode disponible à partir du moteur d' exécution qui ne peut regarder pour déterminer la meilleure façon serialize une transaction.) Il y a aussi les attributs dans les@property
déclarations,copy
,retain
,assign
,readonly
,readwrite
,nonatomic
,getter
etsetter
; ceux-ci ne sont valides que dans la section attribut d'une@property
déclaration.la source
@
.@
caractère n'était pas utilisé par C, donc c'était une «trappe d'échappement» pratique à l'analyse alternative qui préservait également une compatibilité à 100% avec le code C existant.À partir du didacticiel Objective-C: Le symbole @ , la raison pour laquelle il est sur le devant de divers mots-clés:
De plus, lorsqu'elle est vue devant une chaîne littérale, elle crée une NSString plutôt qu'un 'char *' en C.
la source
À partir de Macrumors: Tutoriel Objective-C , devant une chaîne littérale:
Le @ ajoute également le support Unicode aux chaînes C.
la source
+[NSString stringWithUTF8String:]
(celles-ci sont allouées dynamiquement), et la libération et la conservation n'ont aucun effet sur elles.À partir du manuel :
la source
@
utilisation. Je regarde du code comme celui-ci:mapperOptions = @{ kSTMapperVolumeResolutionKey: @(volumeResolution),
... rien à voir avec NSString