2011-08-04 6 views
0

私は自分の電子メールボタンのコールバックでリリースしているMFMailComposeViewControllerオブジェクトを持っています。私はそれを作成しているだけなので、断続的ですが、常にアプリケーションをクラッシュさせるとは限りません。Xcodeを使ってオブジェクトのダブルリリースを検出するには?

このような状況を検出するためにXcodeの計測プログラムを使用するにはどうすればよいですか?

ありがとうございました。

答えて

0

あなたは(製品>編集スキーム...、選択ラン(製品名)引数]タブをクリックして、環境変数のリストを編集)YESNSZombieEnabled環境変数を設定することができます。 NSZombieでは、オブジェクトは割り当て解除されず、ゾンビに変わります。メッセージを送信すると、EXC_BAD_ACCESSでクラッシュする代わりにコンソールにエラーが記録されます。そうすれば、本当に問題の原因となっているのがMFMailComposeViewControllerかどうかを知ることができます。

しかし、ビューコントローラの保持と解放は、必要でなくてもよいでしょう。 MFMailComposeViewControllerを作成した直後に提示し、解約後にもう使用しない場合は、それを保持する必要はありません:

- (IBAction)composeMessage:(id)sender { 
    MFMailComposeViewController *mailComposeViewController = [[[MFMailComposeViewController alloc] init] autorelease]; 
    mailComposeViewController.mailComposeDelegate = self; 
    [self presentModalViewController:mailComposeViewController animated:YES]; 
} 

- (void)mailComposeController:(MFMailComposeViewController *)mailComposeViewController didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error { 
    // Present error to the user if failed 
    [self dismissModalViewControllerAnimated:YES]; 
} 
関連する問題