1

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

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

4

2 回答 2

3

编码:

NSString *var = @"value";

NSCFConstantString创建一个由编译器创建并作为程序数据的一部分存储的实例。出于内存管理的目的,它不响应retain或者release可以有效地被忽略。

但是代码:

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

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

于 2012-05-08T10:44:23.413 回答
2

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

于 2012-05-08T09:56:02.723 回答