私はhereの前に、同様の質問が答えられていることを知っていますが、ちょっとだけ分かりました。ここに私のシナリオです...アイホンメモリ管理(autorelease)の明確化
私は、以下に示すように、割り当てられたUIImageViewを返すヘルパークラスメソッドを持っています。
私はそのように使用しています私のUIViewControllerの方法のいずれかで、その後+(UIImageView *)tableCellButton{
return [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image"]] autorelease];
}
..
UIImageView *imageView = [Helper tableCellButton];
imageView.frame = cell.backgroundView.bounds;
imageView.tag = 250;
[cell.backgroundView addSubview:imageView];
私の質問は、このメモリが解放される方法に関してです。私はautoreleaseプール(アプリケーションを作成したもの以外)を使用していないので、変数はiVar/Propertyではありません(したがって、deallocが呼び出されると解放されません)。この場合、私はそれを呼び出した後でメモリを解放する責任がありますか?オートレリーズはいつ始まりますか?助けてくれてありがとう!
はとき[AutoreleasePoolリリース](http://stackoverflow.com/questions/581828/autorelease-scope)については、ここでこの質問を参照してください。うまくいけばそれはあなたにいくつかの洞察を与えるでしょう。ボタンを押している間に作成された場合、または 'cell.backgroundView'が存続している限り(' addSubview 'retains。) –
リリースで...私のアプリケーションの唯一の自動解放プールはmainにあるものです。その場合、リークが発生するのですか、ViewControllerがテーブルとセルをクリーンアップすると、そのオブジェクトはリリースを送信されますか? – DerekH
あなたの返答をありがとう!私もiOS用のメモリ管理ドキュメントを見つけました(私が以前にどのように見逃していたかわかりません)。 http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/MemoryMgmt/MemoryMgmt.html#//apple_ref/doc/uid/10000011-SW1 – DerekH