0

これはコードです:EXC_BAD_ACCESS

UITabBarController *tbc = [[UITabBarController alloc]init]; 
tbc.viewControllers = [NSArray arrayWithObjects:ptlc,cvc,gvc,nil]; 
[self.navigationController pushViewController:tbc animated:YES]; 
[tbc release]; 

これはのtableViewのコードの最後の部分である:didSelectRowAtIndexPath :. UITabarControllerがうまく行を選択すると、UINavigationControllerの "戻る"ボタンを押すと、1秒後にプログラムがクラッシュし、コンソールに説明が印刷されません。デバッガは私に "スレッド1:プログラム受信信号:" EXC_BAD_ACCESS "この行には:

int retVal = UIApplicationMain(argc, argv, nil, nil); 

「main.m」にあります。信じられないことに、最後の行を削除すると問題が解決します。 ptlc cvcとgvcは私が最初にインクルードするコントローラで、このコードサンプルの最後の行の後にリリースします。

答えて

2

は自分自身のプロファイルツール "ゾンビ" を使用して、それを解決しました。それは、UIImageが解放された後にリリースメッセージを受け取っていたことを私に示しました。それは、私がUITabBar上の2つの異なるUITabBarItemsに同じUIImageを使用していたためです。

0

そのコードと目に見えて間違っtheresのは何もするので、メモリが賢明。 UINavigationControllerスタック内のビューコントローラとしてUITabBarControllerを使用しないでください。 UITabBarController上のアップルのドキュメントから:

タブバーインターフェイスを作成する前に、あなたはそれを使用する方法を決定する必要があります。データに最も包括的な組織を課しているため、タブバーインターフェイスを使用する適切な方法はいくつかあります。

  • アプリケーションのメインウィンドウに直接インストールします。
  • 分割ビュー・インターフェース内の2つのルートビューの1つとして、それをインストールします。 (のみのiPad)
  • は独自のモードベースの組織を必要とするいくつかのデータを表示するモーダルそれを提示します。
  • ポップオーバーから表示します。 (iPadの場合のみ)
+0

UITabBarControllerは確かにUINavigationControllerの内部で使用することができます。私はそれが何度もやったのを見た。私が知っていることは、他の方法(タブバー内でのナビゲーション)はできないということです。 – bluehallu

+0

@Hallucynogenyc ['here']から引用(http://developer.apple.com/library/ios/featuredarticles/ViewControllerPGforiPhoneOS/TabBarControllers/TabBarControllers.html#//apple_ref/doc/uid/TP40007457-CH102-SW2): 「ナビゲーションコントローラをタブ内に埋め込むことはできますが、その逆は真ではありません。ナビゲーションインターフェイス内からタブバーのインターフェイスを提示することは、潜在的にユーザーにとって混乱を招く可能性があります。ナビゲーションスタックのタブバーはお勧めしません。 –

+0

私は上記で説明した通り、Deepakは正しいです。これは不正なアクセスの問題であるため、NSZombieをオンにして問題の発生場所を確認することをお勧めします。 –