我对Objective-C非常陌生,但我在C/C++方面经验丰富,所以有些东西看起来很奇怪。我正在阅读显示Objective-C基础知识的教程,作者警告我忘记在我的字符串之前包含@
。所以,例如初始化一个字符串,为什么需要`@`?
"Hello"
VS @"Hello"
但是,笔者并没有解释为什么@
需要还是什么的语法意义。这就是我现在要问的,@
是做什么的?
我对Objective-C非常陌生,但我在C/C++方面经验丰富,所以有些东西看起来很奇怪。我正在阅读显示Objective-C基础知识的教程,作者警告我忘记在我的字符串之前包含@
。所以,例如初始化一个字符串,为什么需要`@`?
"Hello"
VS @"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);
采用@
指定所特有的目标C和不在原C.在这种情况下,如果你想要一个客观特征C NSString
对象作为文字,您使用@
否则您最终会得到不是Objective C对象而是原始C实体的不同类型的字符串。
你甚至可以做这样的事情:'NSUInteger len = [@“Hello”length];'。 – rmaddy