#ios #objective-c #xcode #ios8 #mfmailcomposeviewcontroller
#iOS #objective-c #xcode #ios8 #mfmailcomposeviewcontroller
Вопрос:
В основном, что я пытаюсь сделать, это отправить электронное письмо:
-(void) sendAnEmail {
if ([MFMailComposeViewController canSendMail])
{
MFMailComposeViewController *mail = [[MFMailComposeViewController alloc] init];
mail.mailComposeDelegate = self;
[mail setSubject:@"Subject"];
[mail setMessageBody:@"Hey, check this out!" isHTML:NO];
[mail setToRecipients:@[@"testing@gmail.com"]];
[self presentViewController:mail animated:YES completion:NULL];
}
else
{
NSLog(@"device cannot send email");
}
}
Ошибки нет, предупреждения нет. Вывод, если эта пустота:
BSXPCMessage получил сообщение об ошибке: соединение прервано
Как я могу это решить?
тестовое устройство — 5S (8.3)
Комментарии:
1. Действительно ли вызывается этот код?
2. Есть ли у вас какие-либо манипуляции с CIFilter где-нибудь поблизости?
3. ну, я пытался отправить электронное письмо с вложением, возникла та же проблема, поэтому я пытаюсь сделать что-то простое, это фактический код
4. @alexburtnik втф большое вам спасибо за подсказку — вы потрясающие: D можете ли вы объяснить, почему это происходит в ответе, я отмечу его как правильный
Ответ №1:
-
Из этого руководства Apple я могу понять, что службы XPC должны предотвращать сбой приложений, каким-то образом разделяя нестабильные компоненты.
-
Сам сбой вызван какой-то ошибкой в CIFilter. Трудно сказать, что на самом деле не так с вашим кодом, поскольку проблема, очевидно, не в
MFMailComposeViewController
этом. Если вы создаетеCIContext
с такими параметрами:
[CIContext contextWithOptions: @{kCIContextUseSoftwareRenderer : @(NO)}];
Попробуйте заменить NO
на YES