私は2つのビューコントローラVC1とVC2を持っています。私は、VC2のオブジェクトを作成し、それをボタンアクションに押してVC2を押し込もうとします。私はボタンアクションでそれをポップしていますVC2で目的のCでUINavigationControllerを押してポップするときのメモリの問題
VC2 *vcOject = [[VC2 alloc]init];
[self.navigationController pushViewController:vcOject animated:YES];
[vcObject release];
..
[self.navigationController popViewControllerAnimated:YES];
は、今私はVC1で午前再び表示するためにVC2を押します。今度はEXC_BAD_ACCESSエラーが表示されます。しかし、私は[vcObject release]とコメントしました。それはうまく動作します。いつ私はメモリを解放することができます。ナビゲーションコントローラでのメモリの処理方法
を使用せずに、プッシュ/ポップのViewControllerでメモリ管理を処理する方法です。私はARCを使用していません。いつdealloc menthodが呼び出されますか。私がプッシュ/ポップビューコントローラ、それは呼び出されていません。どのように私はそれをリリースすることができます。私はあなたの2番目の提案を使用しています。私はオブジェクトの参照を保持しているので、次回は同じオブジェクトをプッシュするだけです。 deallocメソッドが呼び出されていません。 –
deallocメソッドは、View Controllerが割り当て解除されたときに呼び出されます。あなたはそれを担当していない、ランタイムは、それが必要なときに呼び出されることを確実に安心している。実際には、コントローラのビューがビュー階層から削除されたとき、またはアプリケーションが終了したときのいずれかです。あなたが正しいことをしている限り、あなたは記憶を漏らさないでしょう。 Objective-Cを書くことについて誰も言わないことの1つは、書くすべてのクラスに対してdeallocをオーバーライドし、すべてのインスタンス変数を解放する必要があるということです。 –
さて、あなたはiOS 4.3でARCを使うことができますが、それは少し不自由なので、私はあなたがしたくない理由を得ます。 –