使用Interface Builder为UITabBarViewController设置委托时应用程序崩溃

时间:2012-08-01 16:11:22

标签: ios xcode delegates interface-builder storyboard

我正在尝试为我的Story Board标签栏控制器创建一个UITabBarControllerDelegate ...

#import <Foundation/Foundation.h>

@class CountryPickerViewController;

@interface TabBarDelegate : NSObject <UITabBarControllerDelegate>

@property (strong) CountryPickerViewController *countryPickerViewController;

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

@end

使用Interface Builder我创建了一个Object,然后将其指定为这样的委托:

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

1 个答案:

答案 0 :(得分:1)

不保留IBOutlets。您需要对标签栏委托的强引用,以便将其保持足够长的时间以供您的视图使用。现在它在视图加载后立即被释放。