初始化一个string,为什么需要`@`?
我对Objective-C非常陌生,但是我在C / C ++方面经验丰富,所以有些东西看起来很奇怪。 我正在阅读一个教程,该教程显示了Objective-C的基础知识,作者警告我忘记在我的string之前包含@
。 所以,比如说
"Hello"
vs @"Hello"
然而,作者并没有解释为什么@
是必需的或者它的语法意义是什么。 所以这就是我现在要问的, @
做什么的?
这是一个NSString
文字。 没有@
,你会创build一个char *
,而不是像NSString
这样的对象。
Objective-C是C的超集,所以你应该知道"hello"
是一个Cstring( const char *
)。
@"hello"
是不同的,它是NSString *
。 NSString
是ObjC对象,你可以发送消息给它,并使用像对象。 你不能用Cstring。
例如,从这两个string中获取长度:
NSString *objcStr = @"hello"; int len = [objcStr length]; const char * cStr = "hello"; len = strlen(cStr);
使用@
表示Objective C特有的特性,而不是C中的特性。在这种情况下,如果需要Objective C NSString
对象作为文本,则使用@
否则最终会得到不同types的string不是一个Objective C对象,而是一个原始的C实体。