2009-09-21 14 views
1

メインメニューの上にサブビューUIViewControllerを作成して追加するメインのUIViewController(メインメニュー)にいくつかのボタンがあります。サブビューを削除すると、そのコントローラーからのメモリーは解放されません。そのサブビューメモリを即座に解放するにはどうしたらいいですか?iPhone - deallocサブビューUIViewController removeFromSuperview

例がありますか?これは私のすべての問題を解決するだろう!前もって感謝します。ビューの階層構造(self.view)ずつ、その他 - ここ

は、私はあなたがのUIViewControllerが保持されている少なくとも二つの場所がある可能性が提供されたコードに基づいて、サブビュー

if((UIButton *) sender == gameClassicBtn) { 
     GameClassic *gameClassicController = [[GameClassic alloc] 
          initWithNibName:@"GameClassic" bundle:nil]; 
     self.gameClassic = gameClassicController; 
     [gameClassicController release]; 
     [self.view insertSubview:gameClassicController.view atIndex:1]; 
    } 

答えて

0

を追加する方法ですメンバー変数(self.gameClassic)で指定します。これは、ビュー階層の参照のみを解放していて、メンバ変数は解放していないようです。後者をリリースすると、UIViewControllerの割り当てが解除されますか?

+0

私はメインメニューのコードの中に何も公開しません...上記のコードはどこにありますか?私はそのファイルから、gameClassic.hをビューから削除したことをどのように伝えるかわかりません。私は[self.view removeFromSubview]によってそのSubviewを削除します。私のメインメニューに戻るために。 – bbullis21

+0

基本的に私の問題はメインメニューのボタンをクリックしてサブビューを挿入することです。ショートゲーム終了後、removeFromSubviewを実行すると、そのサブビューのメモリはすぐに解放されません。したがって、メインメニューの別のボタンを選択すると別のサブビューがロードされ、objectallocはビルドを維持します。 – bbullis21

+0

GameClassicクラスの一時的な保持と解放を一時的にオーバーライドし、それぞれにブレークポイントを設定します。そうすれば、インスタンスが保持され、解放されていることがわかり、余分な参照カウントをどこから削除する必要があるかを知ることができます。 – fbrereto

関連する問題