我的应用程序有一个自定义 Segue。该应用程序的左侧有一个标签栏,上面有五个按钮。主视图 TDViewController 有一个 UIViewController (UIViewController * currentViewController) 和一个 UIView (View * placeholder)。我将以下代码用于我的自定义 segue。
@implementation TDCustomTabBarSegue
- (void) perform {
TDViewController *vc = (TDViewController *)self.sourceViewController;
UIViewController *dstVC = (UIViewController *) self.destinationViewController;
for(UIView *view in vc.placeholder.subviews){
[view removeFromSuperview];
}
vc.currentViewController = dstVC;
[vc.placeholder addSubview:dstVC.view];
}
一切都很好,直到我尝试单击当前占位符视图中的按钮。我收到错误 [MyViewController performSelector:withObject:withObject:]: message sent to deallocated instance 0x7562e70
我认为我的视图控制器没有被保留,但不知道如何解决我的问题。
编辑——附加信息
TDTViewController.m
...
- (IBAction)modeButtonClicked:(id)sender; //hooked up to storyboard
TDTViewController.m
...
- (IBAction)modeButtonClicked:(id)sender {
//hooked up to storyboard
}
这个问题不是我的 UIButton 独有的。与占位符视图中的任何控件交互都会使应用程序崩溃,并出现相同的已释放实例错误。
探查器在 TDTViewController 上给了我一个僵尸。事件类型 = Malloc,RefCt = 1,负责调用者 = -[UIClassSwapper initWithCoder:]