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:程序接收到的信號:」EXC_BAD_ACCESS「。」在這條線上:

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

關於「main.m」。令人難以置信的是,刪除最後一行解決了這個問題。 ptlc cvc和gvc是我首先分配的控制器,並且我在此代碼示例的最後一行之後發佈。

回答

2

使用配置文件工具「殭屍」解決了它自己。它向我展示了一個UIImage在釋放後正在收到釋放消息。這是因爲我在UITabBar上爲兩個不同的UITabBarItem使用了相同的UIImage。

0

因爲theres沒有什麼明顯錯誤的代碼,記憶明智的;它讓我相信這是因爲你不應該在UINavigationController堆棧中使用UITabBarController作爲視圖控制器。從蘋果文檔UITabBarController

在創建標籤欄界面之前,您需要決定打算如何使用它。由於它爲您的數據提供了一個總體組織,因此只有少數適​​當的方式來使用標籤欄界面:

  • 直接在您的應用程序的主窗口中安裝它。
  • 將其安裝爲拆分視圖界面中的兩個根視圖之一。 (僅適用於iPad)
  • 以模態方式呈現它以顯示一些需要其自己的基於模式的組織的數據。
  • 從彈出窗口顯示它。 (僅適用於iPad)
+0

當然可以在UINavigationController中使用UITabBarController。我已經看過很多次了。我所知道的是,它不能以其他方式完成(在tabbar內導航)。 – 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,看看問題發生在哪裏。 –