16

iOS 6 では、(MFMailComposeViewController を使用して) いくつかの電子メール メッセージを送信した後、電子メール画面を開くのが非常に遅くなります。最終的に (約 8 メッセージを送信した後)、電子メール ビュー コントローラーが適切に表示される前に、黒い画面が数秒間ユーザーに表示されます。

各黒い画面が表示される前に、ログは次の行を吐き出します。

[MFMailComposeRemoteViewController: ....] com.apple.MailCompositionService からのフェンス バリアの待機中にタイムアウトしました

また、iOS6 で MFMailComposeViewController を使用すると、MailCompositionS プロセスがメモリを占有し始めます (私の iPhone では約 260MB に達します)。これが MFMailComposeViewController の表示の問題の理由だと思います。

iOS 5 ではすべて問題なく動作します。この問題は iOS 6 でのみ発生します。

この問題を解決する方法を見つけた人はいますか?

ありがとう!

コードは標準ですが、とにかく含めます。

-(IBAction)doEmailLog:(id)sender 
{    
    if( [self canSendMail] )
    {       
        // create the compose message view controller
        MFMailComposeViewController* mailComposer = [[MFMailComposeViewController alloc] init];

        // this class will handle the cancel / send results
        mailComposer.mailComposeDelegate = self;

        // fill in the header and body
        [mailComposer setSubject:@"My Subject"];
        [mailComposer setMessageBody:@"My message body" isHTML:NO];

        // attach log file
        if ([[NSFileManager defaultManager] fileExistsAtPath:filename])
        { 
            NSData *data = [NSData dataWithContentsOfFile:filename];
            [mailComposer addAttachmentData:data mimeType:@"text/plain" fileName:filename];
        }

        // show the view controller
        [self presentViewController:mailComposer animated:YES completion:^{LogTrace(@"Presented mail view controller");}];
    }
    else
    {
        ...
    }
}

-(void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
    ...

    // dismiss the compose message view controller
    [self dismissViewControllerAnimated:YES completion:^{LogTrace(@"Finished dismissing mail controller");}];
}
4

2 に答える 2

3

iOS 6 では、メール コンポーザーは独自のアプリです (あなたのアプリ内にあります) :: http://oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/


ARCを使用している場合、コードは私には良さそうです

問題がなければ、Apple の新しい XPC 処理のバグが原因だと思います

于 2012-11-08T22:05:24.547 に答える
0

別の可能な解決策があります:

表示方法からカスタム フォントを削除します (ある場合)。

https://stackoverflow.com/a/19910337/104170

于 2013-11-11T15:47:40.063 に答える