1. ホーム
  2. iphone

[解決済み] オブジェクトの解放は -dealloc ではなく -(void)viewDidUnload で行うべきですか?

2023-01-08 23:59:10

質問

この -(void)viewDidUnload は何のためにあるのでしょうか?

をすべて再利用することはできませんか? -dealloc ? もし、ビューがアンロードされたら -dealloc が呼び出されるのでは?

どのように解決するのですか?

すでに指摘されていることに加えて、私は -viewDidUnload .

これを実装する最も重要な理由のひとつは UIViewController のサブクラスは、一般的にビュー階層内の様々なサブビューへの参照を所有することも含んでいます。 これらのプロパティは IBOutlets を通して設定されている可能性があります。 -loadView の中にある場合などです。

によるサブビューの追加所有は UIViewController によるサブビューの追加所有は、そのビューがビュー階層から削除され、メモリを節約するために解放され、それによってサブビューもビューによって解放されたとしても、実際には UIViewController 自体がまだそれらのオブジェクトへの参照を保持する未解決のものを含んでいるからです。 を解放することで UIViewController を解放することで、これらのオブジェクトも確実に解放され、メモリが解放されます。

ここで解放されたオブジェクトは、通常、再作成されて UIViewController ビューが re-loaded を実装したもので、Nibから、または -loadView .

また UIViewController view プロパティは nil になっています。