通过MGSplitViewController呈现表单时出现随机崩溃

时间:2012-08-08 11:19:01

标签: objective-c ios ipad crash

我在我的应用程序中使用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];    
}

2 个答案:

答案 0 :(得分:1)

我自己得到了答案。而不是

[self openFormSheet:mGSplitViewController];

我用线程使用

调用了该函数
    [self performSelectorOnMainThread:@selector(openPurpose:) withObject:mGSplitViewController waitUntilDone:YES];

我没有随机崩溃。 :)

答案 1 :(得分:0)

您在代码中多次致电alloc,但您并未在任何地方致电releaseautorelease。必须通过释放内存来平衡每次内存分配。如果您不这样做,您的应用程序将泄漏内存并最终崩溃。请阅读the memory management section of Cocoa Core Competencies