Xcode6保留]:发送到解除分配的实例的消息

时间:2014-09-30 00:18:37

标签: ios objective-c uitableview uitabbarcontroller xcode6

当我更新到Xcode6时,我有一个奇怪的问题。

以下是该方案:

  1. tableviewController是主条目,当点击表格的每一行时,它会打开一个标签栏控制器来显示不同的细节(4-5 tabbar viewcontrollers)。我使用导航控制器在tableview和tabbar之间显示和返回,显示代码:
  2. UITabBarController *svc = [self.storyboard instantiateViewControllerWithIdentifier:@"Details"]; [self.navigationController pushViewController:svc animated:NO]; //in didSelectRowAtIndexPath

    Tabbar控制器在故事板中定义。并从标签栏视图[self.navigationController popViewControllerAnimated:NO];

    中退出
    1. 所有tabbar控制器都有一个基类,共享通用功能和菜单处理程序。在重新签名标签栏之前,我释放了所有资源并删除了每个标签栏控制器中的所有通知注册

    2. 问题在于此行被称为

    3. [self.navigationController popViewControllerAnimated:NO];

      显示[mytabbarController1 retain]: message sent to deallocated instance 0x7f83e9af4c80

      1. 从错误中看,它似乎是一个内存管理问题,所以我在每个tabbar控制器的dealloc中添加了更多的调试,我可以看到所有dealloc函数都被调用,然后经过多次[UIViewController _traitCollectionForChildEnvironment:],它停在zobmie [UITabBarController viewControllers]。这可以在instrument-> zombie错误堆栈中看到,抱歉,由于声誉不佳,我目前无法发布图片,所以我复制了部分输出。

      2. 我尝试在我的主条目tableviewcontroller中保持UITabBarController * svc强一点,只要我按住指针它就不会崩溃(虽然在我的tabbar控制器中,它已经退出屏幕了navigationController popViewControllerAnimated)。然后,当我将其设置为nil并想要创建一个新的以显示其他人的详细信息时,它会立即崩溃。

      3. 这是一个ARC问题,因为当我使用MRC更改我的一个tabbar viewcontroller时,它不会出现问题,但是仍然使用ARC的其他人将会遇到同样的崩溃:[mytabbarcontroller2 retain]: message sent to deallocated instance < / p>

      4. 这在Xcode5上工作正常,它只在我最近将我的xcode更新为6时才存在。我有什么方法可以追溯到根本原因吗?

        这是故事板拍摄的图像:

        Image

        僵尸捕获:

        And zombie capture

0 个答案:

没有答案