1

我正在尝试为我的故事板标签栏控制器创建一个 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 我创建了一个对象,然后将其分配为这样的委托:

界面构建器故事板编辑

当我切换到另一个选项卡时,它会导致崩溃。这是怎么回事,我该如何解决?

编辑:顺便说一句,方法实现为tabBarController:didSelectViewController:空(不包含任何特定逻辑)

EDIT2:我没有得到像样的堆栈跟踪,我得到:

违规线程

并且EXC_BAD_ACCESS,我会假设该Tab Bar Delegate对象可能为零?为什么会这样?

EDIT3:我启用了 NSZombies 并发现由于某种原因我在 Interface Builder 中创建的对象发布得太早了?这是正常的吗?

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

1 回答 1

1

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

于 2012-08-01T16:53:17.517 回答