IOS6: MFMailComposeViewController медленно загружает и мигает черным экраном; MailCompositionS начинает записывать память
На iOS 6 после отправки нескольких сообщений электронной почты (с помощью MFMailComposeViewController) экраны электронной почты становятся очень медленными для открытия - при первом открытии ни одного из заполненных полей (без темы, без тела и т.д.) для нескольких секунд, и в конечном итоге (после отправки около 8 сообщений) черный экран отображается пользователю в течение нескольких секунд, прежде чем контроллер электронной почты будет отображаться правильно.
Журнал выводит следующую строку перед отображением каждого черного экрана:
[MFMailComposeRemoteViewController:....] время ожидания ожидания барьер от com.apple.MailCompositionService
Кроме того, использование MFMailComposeViewController в iOS6 приводит к тому, что процесс MailCompositionS начинает работать в режиме hogging memory (он доходит примерно до 260 МБ на моем iPhone). Я предполагаю, что это причина проблем отображения 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");}];
}
Ответы
Ответ 1
на ios 6 почтовый композитор - свое приложение (внутри вашего)
:: http://oleb.net/blog/2012/10/remote-view-controllers-in-ios-6/
код выглядит хорошо для меня , если вы используете ARC, иначе он протекает и на ios6, что может привести к удалению x XPC
если все там хорошо, Id обвиняет его в ошибке в Apple, новой обработке XPC
Ответ 2
существует другое возможное решение:
Удалите пользовательские шрифты из методов внешнего вида, если у вас есть
fooobar.com/info/194094/...