使用 ARC,如果它指向一个没有其他引用的字符串并且你将它设置为一个新的字符串对象,它将自动解除分配。str
当您设置新值时,您无需担心管理旧字符串。
ARC 代表 Automatic Reference Counting,它会在适当的时间(例如当您更改 的值时)为您调用retain
和处理。事实上,您甚至不能再手动调用这些函数,但同样的事情正在“幕后”发生。release
str
顺便说一句,您说“如果不是 nil,我无法手动释放 NSString* str。”。使用 ARC 时解除分配对象的通常做法是将对其的所有引用设置为nil
. 因此,在这种情况下,当您想要解除分配字符串(假设这str
是您对它的唯一引用)时,您只需设置str
为nil
: str = nil;
。但是请记住,正如我上面所说,您不需要为了设置str
新值而执行此操作。ARC 足够聪明,可以同时兼顾两者。
另一边:您有以下代码行:
str = [[NSString alloc] initWithString:localStr];
如果您确实打算制作副本,则可以将其替换为:
str = [localStr copy];
它更短一些,更容易理解。更有可能的是,您不需要实际的副本,您可以只保留对现有字符串的引用,因此您可以使用:
str = localStr;