我对 Objective-C 很陌生,但我在 C/C++ 方面经验丰富,所以有些事情对我来说看起来很奇怪。我正在阅读一个展示 Objective-C 基础知识的教程,作者警告我不要忘记@
在我的字符串之前包含。所以,例如
"Hello"
对比@"Hello"
但是,作者没有解释为什么@
需要它或它的句法含义是什么。所以这就是我现在要问的,它是@
做什么的?
我对 Objective-C 很陌生,但我在 C/C++ 方面经验丰富,所以有些事情对我来说看起来很奇怪。我正在阅读一个展示 Objective-C 基础知识的教程,作者警告我不要忘记@
在我的字符串之前包含。所以,例如
"Hello"
对比@"Hello"
但是,作者没有解释为什么@
需要它或它的句法含义是什么。所以这就是我现在要问的,它是@
做什么的?
那是NSString
字面意思。如果没有@
,您将创建一个char *
,它不是像NSString
.
Objective-C 是 C 的超集,所以你应该知道"hello"
是一个 C 字符串 ( const char *
)。
@"hello"
是不同的东西,它是NSString *
。NSString
是 ObjC 对象,您可以向它发送消息并使用类似的对象。你不能用 C 字符串来做到这一点。
例如,要从这两个字符串中获取长度:
NSString *objcStr = @"hello";
int len = [objcStr length];
const char * cStr = "hello";
len = strlen(cStr);
使用@
指定了 Objective C 独有的特性,并且在原始 C 中没有。在这种情况下,如果你想要一个 Objective CNSString
对象作为文字,你可以使用,@
否则你最终会得到一个不同类型的字符串,它不是Objective C 对象,而是一个原始的 C 实体。