2012-08-08 66 views
3

我在我的應用程序中使用MGSplitViewController。 從一個視圖控制器,在一個按鈕點擊,我已經導航控制到這兩個方法,其中表格將打開與MGSplitViewController的背景(顯示主視圖和詳細視圖。)通過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

這是有或沒有ARC? – Jim 2012-08-16 11:26:46

+0

它沒有ARC – parilogic 2012-08-16 12:38:31

回答

1

我自己得到了答案。取而代之的

[self openFormSheet:mGSplitViewController]; 

我叫了線程功能使用

[self performSelectorOnMainThread:@selector(openPurpose:) withObject:mGSplitViewController waitUntilDone:YES]; 

,我沒有得到隨機崩潰。 :)

0

你在你的代碼中調用alloc幾次,但你是不是叫releaseautorelease任何地方。每次內存分配必須通過釋放內存來平衡。如果你不這樣做,你的應用程序將泄漏內存並最終崩潰。請閱讀the memory management section of Cocoa Core Competencies

+0

嗨吉姆,謝謝你的回覆。我釋放了分配的每個對象。仍面臨同樣的問題。 – parilogic 2012-08-17 16:15:42