2012-08-01 32 views
1

我想創造我的故事板標籤欄控制器UITabBarControllerDelegate爲UITabBarViewController設置委託時崩潰...應用程序使用Interface Builder

#import <Foundation/Foundation.h> 

@class CountryPickerViewController; 

@interface TabBarDelegate : NSObject <UITabBarControllerDelegate> 

@property (strong) CountryPickerViewController *countryPickerViewController; 

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

@end 

使用Interface Builder我創建了一個對象,然後賦予它作爲一個代表像這樣:

Interface builder storyboard edit

當我切換到另一個選項卡,它會導致崩潰。這裏發生了什麼,我該如何解決它?

編輯:順便說一下,對於tabBarController:didSelectViewController:方法的實現爲空(不包含任何特定的邏輯)

EDIT2:我沒有得到一個體面的堆棧跟蹤,我得到:

Offending thread

EXC_BAD_ACCESS,我將認爲Tab Bar Delegate對象可以是零?爲什麼會這樣呢?

EDIT3:我啓用了NSZombies,並發現出於某種原因,我在Interface Builder中創建的Object過早發佈?這是正常的嗎?

2012-08-01 12:41:11.591 MyApp[15437:707] *** -[TabBarDelegate respondsToSelector:]: message sent to deallocated instance 0x194fe0 
+0

「碰撞中的結果」沒有用。怎麼了?你有堆棧跟蹤嗎?它說什麼? – Jim 2012-08-01 16:13:45

+0

@Jim我真的沒有得到一個體面的堆棧跟蹤,但我編輯了我的答案,忘了提及它是EXC_BAD_ACCESS。對不起。 :) – Goles 2012-08-01 16:27:43

回答

1

IBOutlet不保留。您需要對您的標籤欄委託進行強有力的引用,以保持足夠長的時間以供視圖使用。現在它在視圖加載後立即被釋放。

相關問題