在iOS 6上,使用MFMailComposeViewController发送几封电子邮件后,打开邮件屏幕会变得非常缓慢 - 开始时几秒钟内没有填充任何字段(没有主题、正文等),最终(大约发送8条消息后)用户会看到一个黑屏几秒钟,然后才能正确显示电子邮件视图控制器。
每次显示黑屏之前,日志都会输出以下行:
[MFMailComposeRemoteViewController:....] timed out waiting for fence barrier from com.apple.MailCompositionService 此外,在iOS 6上使用MFMailComposeViewController会导致MailCompositionS进程开始占用内存(在我的iPhone上达到了大约260MB)。我认为这是MFMailComposeViewController显示问题的原因。
在iOS 5上一切正常。这个问题只发生在iOS 6上。
有人找到了解决这个问题的方法吗?
谢谢!
代码是标准的,但我还是会把它包含在内:
每次显示黑屏之前,日志都会输出以下行:
[MFMailComposeRemoteViewController:....] timed out waiting for fence barrier from com.apple.MailCompositionService 此外,在iOS 6上使用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");}];
}