我在 ARC 下运行没有自动释放池的代码:
- (NSString*) outName {
if (!outName) {
outName = [[NSString alloc] initWithFormat:@"whatever"]; // or stringWithFormat
}
return outName;
}
调试器说它 每次都在泄漏单个实例而没有适当的池。 outName
如果我将代码更改为
- (NSString*) outName {
if (!outName) {
outName = @"whatever";
}
return outName;
}
这是我做不到的(这个例子显然是简化的)。此外,如果我在调用代码中创建一个自动释放池(我想避免),泄漏消息就会消失。
为什么 ARC 坚持自动释放这个保存在strong
属性中的对象?更重要的是,我怎样才能避免这个警告?