UISplitViewController设置viewControllers第二次崩溃

Nic*_*ard 2 cocoa-touch objective-c uisplitviewcontroller ios automatic-ref-counting

我使用的是UISplitViewControllerARC.

我在我的设置中设置了控制器AppDelegate,然后将其设为rootViewController.我确保做到了property:

@property (strong, nonatomic) UISplitViewController *splitViewController;
Run Code Online (Sandbox Code Playgroud)

viewControllers首次创建时,使用属性设置根和详细信息可正常工作.并且在第二次设置时它再次正常工作,但是第三次​​尝试设置viewControllers属性时我遇到了崩溃.

以下是我设置的方法:

    Screens *edit = [[Screens alloc] initWithStyle:UITableViewStyleGrouped];
    UINavigationController *c = [[UINavigationController alloc] initWithRootViewController:edit];

    if ([Utility isIpad]) {
        Map *a = (Map *)[[MyAppDelegate instance].splitViewController.viewControllers objectAtIndex:0];
        NSArray *viewControllers = [NSArray arrayWithObjects:a, c, nil];
        UISplitViewController *splitView = [MyAppDelegate instance].splitViewController;
        splitView.viewControllers = viewControllers;// <--- Crashes here
    } else {
        [self presentModalViewController:c animated:YES];
    }//end
Run Code Online (Sandbox Code Playgroud)

当我尝试设置viewControllers属性时为什么会崩溃?它几乎似乎被释放了,但我知道它splitViewController仍然存在......

这可能与ARC有关吗?

堆栈跟踪:

在此输入图像描述

Rol*_*lin 8

我刚才有同样的错误.在我的情况下,问题是我最初设置详细视图控制器是一个代表UISplitViewController.然后我重构使根视图控制器处理事情,但我忘了从.xib文件中删除连接.

因此,当我splitView.viewControllers第一次设置一切正常时,然后我的原始细节控制器将被释放,UISplitViewController并留下一个坏指针delegate.下次我设置viewControllers属性时,UISplitViewController试图通过指针调用其委托并崩溃.

您写道,您在应用程序委托中设置了控制器,因此这可能与您遇到的问题不完全相同.仍然,仔细检查以确保正确设置delegate属性UISplitViewController!