在 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");}];
}