【发布时间】:2015-03-05 19:29:41
【问题描述】:
str 是我拥有的 NSString。释放它是我的责任,
因为我打电话给initWithString:
if (![[str substringFromIndex:str.length-1] isEqualToString:@"\n"])
{
str = [str stringByAppendingString:@"\n"];
}
如果 if 语句中的行到达,我将失去 str var 的所有权。
所以当我稍后释放str 时,我的应用会因僵尸实例而崩溃:
[str release];
如果 if 语句为 NO(false),则一切正常。
我可以做些什么来保持str的所有权?
请注意,str 可能会很长,我不想初始化另一个 NSString
【问题讨论】:
-
仅供参考 - 调用
stringByAppendingString:会执行init一个全新的字符串。 -
真的吗? :) 但也许旧字符串会在 :) 之前被释放?
-
@rmaddy 你有什么建议?
-
请问您为什么不使用ARC?现在是 2015 年。除非你真的不得不这样做,否则不要让你的生活变得更艰难。
-
“你有什么建议?” 使用 ARC。 Xcode 使转换变得容易。
标签: objective-c release retain