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,该代码对我来说看起来不错,否则它会泄漏并且在 ios6 上可能会导致 x XPC 遥控器

如果那里一切都好,我会把它归咎于苹果新处理 XPC 中的一个错误

于 2012-11-08T22:05:24.547 回答
0

还有另一种可能的解决方案:

从外观方法中删除自定义字体,如果有的话

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

于 2013-11-11T15:47:40.063 回答