I'm learning objective-c and keep bumping into the @ symbol. It is used in different scenarios, for example at the start of a string or to synthesise accessor methods.
What's does the @ symbol mean in objective-c?
I'm learning objective-c and keep bumping into the @ symbol. It is used in different scenarios, for example at the start of a string or to synthesise accessor methods.
What's does the @ symbol mean in objective-c?
From the manual:
From Objective-C Tutorial: The @ Symbol, the reason it is on the front of various keywords:
Also when seen in front of a string literal, it makes an NSString rather than a 'char *' in C.
From Macrumors: Objective-C Tutorial, when in front of string literal:
The @ also adds unicode support to C strings.
The
@
character isn't used in C or C++ identifiers, so it's used to introduce Objective-C language keywords in a way that won't conflict with the other languages' keywords. This enables the "Objective" part of the language to freely intermix with the C or C++ part.Thus with very few exceptions, any time you see
@
in some Objective-C code, you're looking at Objective-C constructs rather than C or C++ constructs.The major exceptions are
id
,Class
,nil
, andNil
, which are generally treated as language keywords even though they may also have atypedef
or#define
behind them. For example, the compiler actually does treatid
specially in terms of the pointer type conversion rules it applies to declarations, as well as to the decision of whether to generate GC write barriers.Other exceptions are
in
,out
,inout
,oneway
,byref
, andbycopy
; these are used as storage class annotations on method parameter and return types to make Distributed Objects more efficient. (They become part of the method signature available from the runtime, which DO can look at to determine how to best serialize a transaction.) There are also the attributes within@property
declarations,copy
,retain
,assign
,readonly
,readwrite
,nonatomic
,getter
, andsetter
; those are only valid within the attribute section of a@property
declaration.