1

我似乎有一個很奇怪的問題。我的應用程序有一個UITabBar,它可以讓你選擇各種視圖控制器。如果在給定的選定標籤項中,另一個視圖控制器被推入堆棧,然後使用storyboard segues或pushViewControllerpopViewController彈出UINavigationController的堆棧,當您選擇另一個標籤項時,應用程序崩潰。我追蹤了這一點,發現有一個殭屍對象,即被推送然後彈出的視圖控制器。該應用顯然是試圖向其發送消息。這是日誌消息。iOS應用程序在UITabItem上選擇時崩潰

*** -[UserInputViewController respondsToSelector:]: message sent to deallocated instance 0xa5f0620

我見無處在我的代碼我在哪裏訪問視圖 - 控制一旦它被彈出堆棧,並可能釋放,因而被點擊標籤欄項目時,我沒有做任何特殊處理。實際上它之前崩潰了

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController 

甚至被稱爲。它似乎以某種方式標籤欄仍然認爲這個viewcontroller被分配,並在堆棧上,否則爲什麼會嘗試發送一條消息?

任何幫助,非常感謝。

+0

有兩個問題。您是否使用獨立標籤欄或標籤欄控制器?其次,你這樣說:「使用任一故事板segues彈出UINavigationController的堆棧。」你是否使用segue彈出視圖控制器? – rdelmar

+0

我正在使用標籤欄控制器,我試圖用編程方式彈出視圖控制器使用segue。無論哪種方式它崩潰,但事實證明,這不是問題。我不小心被指定爲標籤欄控制器的委託,它視圖控制器(我用的是這這樣做,錯誤地基礎視圖控制器類)。當我改變了,崩潰就走開了。解決方案是在這裏http://stackoverflow.com/questions/14927677/view-controller-getting-a-message-sent-to-it-after-release-causes-a-crash?rq=1 –

+0

在任何情況下,你不應該使用segue從視圖控制器中彈出,除非您使用unwind segue。 – rdelmar

回答

相關問題