読者です 読者をやめる 読者になる 読者になる

メールが設定されていないとMFMailComposeViewControllerのinitに失敗する

iOS

Iphone 4 MFmailcompose viewcontroller crash


StackOverflowの方にも書いておきましたが、タイトルの通り、iOS標準のメールアプリの設定がされていないとinitが失敗します。
失敗すると自動的にアラート画面が出ますが、エラー処理をせずにpresentModalViewController/pushViewController等の操作をするとアプリケーションが落ちます。
失敗したらブロックを抜けましょう。

MFMailComposeViewController* controller =
        [[[MFMailComposeViewController alloc] init] autorelease];
if (!controller) // failed
    return; // auto view alert, "not mail setting..."
controller.mailComposeDelegate = self;


追記(2011/01/12 : 12:00):

if ([MFMailComposeViewController canSendMail]) {
    MFMailComposeViewController* controller =
        [[[MFMailComposeViewController alloc] init] autorelease];

    controller.mailComposeDelegate = self;
}

でチェックしたほうがいいようです。