是什么区别btw NSString * var = @“value”和NSString * var = [[NSString alloc] initWithString:@“value”]

时间:2012-05-08 09:53:06

标签: ios cocoa

在ios中初始化字符串变量的两种方式有什么区别(,adv / disadv)?

NSString *var = @"value"NSString *var =[ [NSString alloc] initWithString:@"value"]

2 个答案:

答案 0 :(得分:3)

代码:

NSString *var = @"value";

创建NSCFConstantString的实例,该实例由编译器创建并存储为程序数据的一部分。它不响应retainrelease,并且可以有效地忽略以用于内存管理。

然而代码:

NSString *var =[ [NSString alloc] initWithString:@"value"];

分配NSString个对象,并使用常量字符串@"value"的内容对其进行初始化。它必须是release d,当不再需要但无法更新时(它是不可变的),因此对第一段代码提供的内容很少。

答案 1 :(得分:2)

@“value”返回一个自动释放的字符串,但initWithString:返回一个需要释放的保留字符串。如果您使用ARC,则没有区别,因为它会为您发布它。

相关问题