3

アプリケーションで MGSplitViewController を使用しています。1 つのビュー コントローラーから、ボタン クリックで、MGSplitViewController (マスター ビューと詳細ビューを表示) のバックグラウンドで Formsheet が開くこれら 2 つのメソッドにコントロールを移動しました。

これらの方法はうまく機能し、必要な結果が得られていますが、多くの操作の後、ログを出力せずにこの時点でアプリがクラッシュします。誰かが私にいくつかの解決策を提案できますか?

-(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];    
}
4

2 に答える 2

1

私自身が答えを得ました。それ以外の

[self openFormSheet:mGSplitViewController];

を使用してスレッドで関数を呼び出しました

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

ランダムクラッシュが発生していません。:)

于 2012-08-19T06:31:01.953 に答える
0

allocコードで何度か呼び出していますがreleaseautoreleaseどこにも呼び出していません。メモリのすべての割り当ては、メモリの解放によってバランスを取る必要があります。これを行わないと、アプリケーションでメモリ リークが発生し、最終的にクラッシュします。Cocoa Core Competencies のメモリ管理セクションをお読みください。

于 2012-08-16T13:21:14.770 に答える