、あなたがInterface Builderで設定された任意の出口は をリリースし、viewDidUnloadにnilに設定され、またのdeallocに解放する必要がありますする必要があります。プログラムが作成したサブビューとviewDidUnload
は(参照:When should I release objects in viewDidUnload rather than in dealloc?)を実装するための最も重要な理由の
ワン[viewDidUnload]のUIViewControllerのサブクラスは、一般的にも、ビュー階層内のさまざまなサブビューへの参照を所有している含まれていることです。これらのプロパティは、ペン先からロードするときにIBOutletsを介して設定するか、またはプログラム内で[emphasis added]のようにプログラムで設定することができます。
私の質問です、私たちは本当に(Interface Builderをせずに)loadViewメソッドでプログラム作成されたビュー階層でサブビューのためviewDidUnloadを実装する必要がありますか?
は完全に正しいです!あなたのビューコントローラは、メモリをリークしたりゾンビにアクセスしたりすることなく、多くのloadView(+ viewDidLoad)/ viewDidUnload-Cyclesを通過できるはずです。最良の例は、Tab Bar ControllerのVCです。タブをクリックするとloadView/viewDidUnloadを経由して割り当てられます。 –
カスタムloadViewメソッドで[super loadView]を呼び出さないでください。コードは次のようになります:self.view = [[[UIView alloc] initWithFrame:[UIScreen mainScreen] .applicationFrame] autorelease]; –
なぜWubaoを説明したいですか? [super loadView]を呼び出す際に問題が発生したことはありません。 – hundreth