我正在学习objective-c 并不断碰到@ 符号。它用于不同的场景,例如在字符串的开头或合成访问器方法。
objective-c 中的@符号是什么意思?
最佳答案
@
字符不用于 C 或 C++ 标识符中,因此它用于以不会与其他语言的关键字冲突的方式引入 Objective-C 语言关键字。这使得语言的“目标”部分可以与 C 或 C++ 部分自由混合。
因此,除了极少数异常(exception),任何时候您在某些 Objective-C 代码中看到 @
时,您看到的是 Objective-C 构造而不是 C 或 C++ 构造。
主要的异常(exception)是 id
、Class
、nil
和 Nil
,它们通常被视为语言关键字,即使它们后面也可能有 typedef
或 #define
。例如,编译器实际上确实对 id
进行了特殊处理,它适用于声明的指针类型转换规则,以及是否生成 GC 写屏障的决定。
其他异常(exception)是 in
、out
、inout
、oneway
、byref
, 和 bycopy
;这些用作方法参数和返回类型的存储类注释,以使分布式对象更高效。 (它们成为运行时可用的方法签名的一部分,DO 可以查看它以确定如何最好地序列化事务。)@property
声明中还有属性,copy
、retain
、assign
、readonly
、readwrite
、nonatomic
、getter
和setter
;这些仅在 @property
声明的属性部分中有效。
https://stackoverflow.com/questions/25749/