我是Objective-C的新手,但我对C / C ++很有经验,所以有些事情对我来说很奇怪。我正在阅读一个教程,其中显示了Objective-C的基础知识,作者警告我忘记在我的字符串之前包含@
。所以,例如
"Hello"
vs @"Hello"
然而,作者没有解释为什么@
是必需的或者它的句法意义是什么。那就是我现在要问的问题,@
做了什么?
答案 0 :(得分:12)
这是一个NSString
字面值。如果没有@
,您就会创建一个char *
,而不是像NSString
这样的对象。
答案 1 :(得分:3)
Objective-C是C的超集,所以你应该知道"hello"
是一个C字符串(const char *
)。
@"hello"
有所不同,它是NSString *
。 NSString
是ObjC对象,您可以向其发送消息并使用like对象。你不能用C string做到这一点。
从这两个字符串获取长度:
NSString *objcStr = @"hello";
int len = [objcStr length];
const char * cStr = "hello";
len = strlen(cStr);
答案 2 :(得分:0)
@
的使用指定了Objective C特有的功能,而不是原始C。在这种情况下,如果您希望将Objective C NSString
对象作为文字,则使用{{ 1}}否则你最终会得到一个不同于Objective C对象的字符串,而不是一个原始C实体。