2011-02-25 84 views
2

这里有两种方法可以生成NSStringNSString格式问题

NSString *sBody = [NSString stringWithString:@"Hello"] 

NSString *sBody = @"Hello" 

大部分时间里,我看到它的第一种方式。但是使用第二个也是“干净”的,还是不使用它更好?

谢谢,祝你有美好的一天!

回答

4

它们是等价的。它使用文字的代码更少(第二个示例),所以我只是使用它。

2

这是一样的,你帮助编译器的第一种方式,但它已经在优化字符串变量方面做了很多工作。

+0

第一个示例如何帮助编译器? – Ryan 2011-02-25 19:31:08

+0

如果它是一个字符串,则NSString类必须完成所有工作。因此,如果您使用第二个示例,编译器会将其转换为与第一个示例相同的方式。 – 2011-02-25 19:37:35

+0

呃,没有。如果你使用'@“Hello”',那么编译器会动态地创建一个特殊形式的NSString并将其直接构建到编译后的二进制文件的数据段中。它还采用原始C字符串数据(UTF-8格式)并将其放入二进制文件的文本段中。内置的NSString的数据ptr指向内置的C字符串。编译器不会将其转换为方法调用,它只是在数据中生成并直接引用它(即单个“ldw”或“mov”指令)。 – 2011-02-26 00:06:19