为什么’@’在Objective-C中的字符串之前使用?

Why is the '@' used before strings in Objective-C?

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Purpose of @ Symbol Before Strings?

在每个字符串都是目标C之前,我一直很好奇@的意思是什么。它在编译器上更容易,还是在某种程度上更高效?

例子:

1
NSString* flavour = @"Chocolate"


@"Chocolate"只是创建NSString实例的快捷方式。您还可以使用:

1
[[NSString alloc] initWithUTF8String:"Chocolate"];

如果不使用@,您将创建一个C字符串(char数组)。


在C或C++标识符中不使用EDCOX1×0字符,因此它以不与其他语言的关键字冲突的方式引入Objul-C语言关键词。这使得语言的"目标"部分能够自由地与C或C++部分混合。


因为objective-c是plain c的超集,所以必须有一种方法来区分NSString文本plain c字符串(基本上只是char*指针)。


区分C字符串和目标C类