在 MGSplitViewController 上呈现表单时随机崩溃
Posted
技术标签:
【中文标题】在 MGSplitViewController 上呈现表单时随机崩溃【英文标题】:Random crash on presenting formsheet over MGSplitViewController 【发布时间】:2012-08-05 11:54:42 【问题描述】:我在我的应用程序中使用 MGSplitViewController。 从一个视图控制器中,单击按钮时,我已将控件导航到这两种方法,其中 Formsheet 将以 MGSplitViewController 的背景打开(显示主视图和详细视图。)
这些方法效果很好,我得到了所需的结果,但是经过多次操作后,应用程序在这一点上崩溃而没有打印任何日志。谁能建议我一些解决方案?
-(void)launchSplitViewWithFormSheet :(MGSplitViewController *)mGSplitViewController
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:mGSplitViewController];
[self.baseNavigationController setViewControllers:[NSArray arrayWithObject:navController]];
[self openFormSheet:mGSplitViewController];
-(void)openFormSheet:(MGSplitViewController *)mGSplitViewController
DetailViewController *detailViewController = (DetailViewController *)[mGSplitViewController.viewControllers objectAtIndex:0];
MasterViewController *masterViewController = [[MasterViewController alloc] initWithNibName:@"MasterViewController" bundle:nil];
UINavigationController *baseNavController = [[UINavigationController alloc]initWithRootViewController:masterViewController];
detailViewController.masterViewController = detailViewController;
baseNavController.modalPresentationStyle = UIModalPresentationFormSheet;
[mGSplitViewController presentModalViewController:baseNavController animated:YES];
【问题讨论】:
【参考方案1】:我自己得到了答案。而不是
[self openFormSheet:mGSplitViewController];
我用线程调用了函数
[self performSelectorOnMainThread:@selector(openPurpose:) withObject:mGSplitViewController waitUntilDone:YES];
而且我不会随机崩溃。 :)
【讨论】:
【参考方案2】:您在代码中多次调用alloc
,但没有在任何地方调用release
或autorelease
。每个内存分配都必须通过内存释放来平衡。如果您不这样做,您的应用程序将泄漏内存并最终崩溃。请阅读the memory management section of Cocoa Core Competencies。
【讨论】:
嗨,吉姆,感谢您的回复。我释放了每个分配的对象。仍然面临同样的问题。以上是关于在 MGSplitViewController 上呈现表单时随机崩溃的主要内容,如果未能解决你的问题,请参考以下文章
iOS8 MGSplitViewController 替代品
MGSplitViewController 与所有 github 补丁?