2013-05-17 70 views
1

我对Objective-C非常陌生,但我在C/C++方面经验丰富,所以有些东西看起来很奇怪。我正在阅读显示Objective-C基础知识的教程,作者警告我忘记在我的字符串之前包含@。所以,例如初始化一个字符串,为什么需要`@`?

"Hello" VS @"Hello"

但是,笔者并没有解释为什么@需要还是什么的语法意义。这就是我现在要问的,@是做什么的?

回答

12

这是一个NSString文字。没有@,你会创建一个char *,这不是像NSString这样的对象。

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); 
+2

你甚至可以做这样的事情:'NSUInteger len = [@“Hello”length];'。 – rmaddy

0

采用@指定所特有的目标C和不在原C.在这种情况下,如果你想要一个客观特征C NSString对象作为文字,您使用@否则您最终会得到不是Objective C对象而是原始C实体的不同类型的字符串。

相关问题