在ios中初始化字符串变量的两种方式有什么区别(,adv / disadv)?
NSString *var = @"value"
和NSString *var =[ [NSString alloc] initWithString:@"value"]
答案 0 :(得分:3)
代码:
NSString *var = @"value";
创建NSCFConstantString
的实例,该实例由编译器创建并存储为程序数据的一部分。它不响应retain
或release
,并且可以有效地忽略以用于内存管理。
然而代码:
NSString *var =[ [NSString alloc] initWithString:@"value"];
分配NSString
个对象,并使用常量字符串@"value"
的内容对其进行初始化。它必须是release
d,当不再需要但无法更新时(它是不可变的),因此对第一段代码提供的内容很少。
答案 1 :(得分:2)
@“value”返回一个自动释放的字符串,但initWithString:返回一个需要释放的保留字符串。如果您使用ARC,则没有区别,因为它会为您发布它。