【发布时间】:2011-02-25 19:12:44
【问题描述】:
这里有两种方法可以创建NSString。
NSString *sBody = [NSString stringWithString:@"Hello"]
对比
NSString *sBody = @"Hello"
大多数时候,我以第一种方式看待它。但是使用第二个也“干净”,还是不使用更好?
谢谢,祝你有美好的一天!
【问题讨论】:
这里有两种方法可以创建NSString。
NSString *sBody = [NSString stringWithString:@"Hello"]
对比
NSString *sBody = @"Hello"
大多数时候,我以第一种方式看待它。但是使用第二个也“干净”,还是不使用更好?
谢谢,祝你有美好的一天!
【问题讨论】:
它们是等价的。使用文字的代码更少(第二个示例),所以我会使用它。
【讨论】:
同样,第一种方式是帮助编译器,但它已经在优化字符串变量方面做得很好。
【讨论】:
@"Hello",那么编译器会动态创建一种特殊形式的 NSString 并将其直接构建到编译后的二进制文件的数据段中。它还获取原始 C 字符串数据(UTF-8 格式)并将其放入二进制文件的文本段中。内置 NSString 的数据 ptr 指向内置 C 字符串。编译器不会将其转换为方法调用,它只是构建数据并直接引用它(即单个 ldw 或 mov 指令)。