1

我对 Objective-C 很陌生,但我在 C/C++ 方面经验丰富,所以有些事情对我来说看起来很奇怪。我正在阅读一个展示 Objective-C 基础知识的教程,作者警告我不要忘记@在我的字符串之前包含。所以,例如

"Hello"对比@"Hello"

但是,作者没有解释为什么@需要它或它的句法含义是什么。所以这就是我现在要问的,它是@做什么的?

4

3 回答 3

12

那是NSString字面意思。如果没有@,您将创建一个char *,它不是像NSString.

于 2013-05-17T03:40:40.133 回答
3

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);
于 2013-05-17T03:41:12.610 回答
0

使用@指定了 Objective C 独有的特性,并且在原始 C 中没有。在这种情况下,如果你想要一个 Objective CNSString对象作为文字,你可以使用,@否则你最终会得到一个不同类型的字符串,它不是Objective C 对象,而是一个原始的 C 实体。

于 2013-05-17T03:58:53.347 回答