UISplitViewController第二次崩溃设置viewControllers
问题描述:
我在ARC
上使用UISplitViewController
。UISplitViewController第二次崩溃设置viewControllers
我在我的AppDelegate
中设置控制器,然后将其设置为rootViewController
。我已经确定,使之成为property
:
@property (strong, nonatomic) UISplitViewController *splitViewController;
使用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
为什么它会崩溃,当我尝试设置viewControllers
财产?它几乎看起来像它被释放,但我知道,splitViewController
仍然存在...
这可能是与ARC有关吗?
堆栈跟踪:
答
刚才我同样的错误。在我的情况下,问题在于我最初将详细视图控制器设置为UISplitViewController
的代表。然后我重构,使根视图控制器处理的东西,但我忘了从.xib
文件中删除连接。
所以,当我第一次设置splitView.viewControllers
一切正常,但我的原始细节控制器将被释放,UISplitViewController
留下一个不好的指针作为delegate
。下次我设置viewControllers
属性时,UISplitViewController
试图通过指针调用其委托并崩溃。
你写道,你在你的应用程序委托中设置了控制器,所以这可能不是完全相同的问题。不过,请仔细检查以确保UISplitViewController
的delegate
属性设置正确!
什么是它的崩溃回溯?另外,怀疑它与ARC有关。 – mattjgalloway 2012-03-28 22:08:39
好吧,愚蠢的问题。我如何看到回溯?我只有在Debug Navigator中有什么。 – 2012-03-29 00:31:34
在调试导航器中应该有回溯。底部有一个滑块,如果您一直滑到右侧,您将获得完整的回溯。 – mattjgalloway 2012-03-29 08:00:52