当我更新到Xcode6时,我有一个奇怪的问题。
以下是该方案:
UITabBarController *svc = [self.storyboard instantiateViewControllerWithIdentifier:@"Details"];
[self.navigationController pushViewController:svc animated:NO]; //in didSelectRowAtIndexPath
Tabbar控制器在故事板中定义。并从标签栏视图[self.navigationController popViewControllerAnimated:NO];
所有tabbar控制器都有一个基类,共享通用功能和菜单处理程序。在重新签名标签栏之前,我释放了所有资源并删除了每个标签栏控制器中的所有通知注册
问题在于此行被称为
[self.navigationController popViewControllerAnimated:NO];
显示[mytabbarController1 retain]: message sent to deallocated instance 0x7f83e9af4c80
从错误中看,它似乎是一个内存管理问题,所以我在每个tabbar控制器的dealloc中添加了更多的调试,我可以看到所有dealloc函数都被调用,然后经过多次[UIViewController _traitCollectionForChildEnvironment:],它停在zobmie [UITabBarController viewControllers]。这可以在instrument-> zombie错误堆栈中看到,抱歉,由于声誉不佳,我目前无法发布图片,所以我复制了部分输出。
我尝试在我的主条目tableviewcontroller中保持UITabBarController * svc强一点,只要我按住指针它就不会崩溃(虽然在我的tabbar控制器中,它已经退出屏幕了navigationController popViewControllerAnimated)。然后,当我将其设置为nil并想要创建一个新的以显示其他人的详细信息时,它会立即崩溃。
这是一个ARC问题,因为当我使用MRC更改我的一个tabbar viewcontroller时,它不会出现问题,但是仍然使用ARC的其他人将会遇到同样的崩溃:[mytabbarcontroller2 retain]: message sent to deallocated instance
< / p>
这在Xcode5上工作正常,它只在我最近将我的xcode更新为6时才存在。我有什么方法可以追溯到根本原因吗?
这是故事板拍摄的图像:
僵尸捕获: