Nic*_*ard 2 cocoa-touch objective-c uisplitviewcontroller ios automatic-ref-counting
我使用的是UISplitViewController上ARC.
我在我的设置中设置了控制器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有关吗?
堆栈跟踪:

我刚才有同样的错误.在我的情况下,问题是我最初设置详细视图控制器是一个代表UISplitViewController.然后我重构使根视图控制器处理事情,但我忘了从.xib文件中删除连接.
因此,当我splitView.viewControllers第一次设置一切正常时,然后我的原始细节控制器将被释放,UISplitViewController并留下一个坏指针delegate.下次我设置viewControllers属性时,UISplitViewController试图通过指针调用其委托并崩溃.
您写道,您在应用程序委托中设置了控制器,因此这可能与您遇到的问题不完全相同.仍然,仔细检查以确保正确设置delegate属性UISplitViewController!
| 归档时间: |
|
| 查看次数: |
1178 次 |
| 最近记录: |