2009-03-19 26 views
0

NavControllerで起動するiPhoneアプリケーションを作成しました。いくつかのレベルの後にテーブルからオプションを選択すると、アニメーション表示がポップアップします。 tabbarcontrollerをそのルートに配置します。TabBarControllerのView Controller用のRetainCount - (別名tabBarControllerを解放する)

これは、navcontrollerを置き換える完全に別個のビューです。タブを前後に移動し、オプション画面に戻って戻るときに、別のアニメーショントランジションが、ナビゲーションコントローラをスワップバックして、タブバーコントローラを取り外してリリースします。

問題は、UITabBarControllerを解放することで発生します。タブボタンを押してタブを切り替えると、View Controllerの参照カウントが継続的に増加するようです。次に、tabBarControllerリファレンスでリリースを呼び出すと、選択したタブまたはまだ表示していないタブのビューコントローラのみが解放され、他のタブのviewcontrollersの保持カウントの1つが使用されます。これは、選択されていない他の各タブからすべてのModelオブジェクト、カスタムセルオブジェクトなどをリークすることを意味します。

xcodeで新しいテンプレートTabBarControllerプロジェクトを作成し、それ自体の保持カウントを出力する最初のView ControllerにviewWillAppearメソッドを追加すると、私が見ているものの例です。アプリを起動し、最初と2番目のタブボタンを前後に押して、保持カウントが増加し続けるログを見てください。

したがって、タブバーコントローラを解放し、同時にそのビューコントローラをすべて解放する方法があるのでしょうか?

答えて

0

これが本当であれば、それはバグであり、Apple Radarでレポートを提出する必要があります。

0

私はこの問題をアップルの開発者フォーラムに投稿して確認しましたが、何も聞こえませんでした。

OS3.0で自分のアプリをチェックすると、この動作が修正されていることがわかります。参照カウントが増加することはなく、UITabBarControllerを解放すると動作するように見えます。

悲しいことに、私はOS 3.0でうまくいきませんので、これを修正するために不快なハックを入れました。今は条件付きコンパイル時です。

関連する問題