ARCの下に自動解放プールを配置せずにこのコードを実行しています:
- (NSString*) outName {
if (!outName) {
outName = [[NSString alloc] initWithFormat:@"whatever"]; // or stringWithFormat
}
return outName;
}
デバッガーは、 プールが配置されていない状態で毎回単一のインスタンスをリークしていると言います。 outName
コードを次のように変更しても、これは発生しません
- (NSString*) outName {
if (!outName) {
outName = @"whatever";
}
return outName;
}
私にはできません(この例は明らかに単純化されています)。また、呼び出し元のコードに自動解放プールを作成すると、リークメッセージが消えます(これは避けたいです)。
strong
なぜARCは、プロパティに保持されているこのオブジェクトの自動リリースを主張しているのですか?そしてもっと重要なことに、どうすればこの警告を回避できますか?