我在我的应用程序中使用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];
}
答案 0 :(得分:1)
我自己得到了答案。而不是
[self openFormSheet:mGSplitViewController];
我用线程使用
调用了该函数 [self performSelectorOnMainThread:@selector(openPurpose:) withObject:mGSplitViewController waitUntilDone:YES];
我没有随机崩溃。 :)
答案 1 :(得分:0)
您在代码中多次致电alloc
,但您并未在任何地方致电release
或autorelease
。必须通过释放内存来平衡每次内存分配。如果您不这样做,您的应用程序将泄漏内存并最终崩溃。请阅读the memory management section of Cocoa Core Competencies。