Мое приложение для iPhone было отклонено TestFlight, потому что оно привело к сбою iPad. Код нарушения пытается показать контроллер для отправки электронной почты. Я сократил код до небольшого простого примера, который работает, как и ожидалось, на моем iPhone 5c под управлением iOS 9.3.1, но вызывает сбой на моем iPad 2 под управлением iOS 9.3.1:
- (void)viewDidLoad {
[super viewDidLoad];
[self displayComposerSheet];
}
-(void)displayComposerSheet {
// Create e-mail interface
MFMailComposeViewController *picker = [[MFMailComposeViewController alloc] init];
picker.mailComposeDelegate = self;
[picker setSubject:@"iPad crash test"];
// Add recipients
NSArray *toRecipients = [NSArray arrayWithObject:@"[email protected]"];
[picker setToRecipients:toRecipients];
// Fill body
NSString *emailBody = @"A short test of iPad crashes";
[picker setMessageBody:emailBody isHTML:NO];
// Show interface - iPad crashes here but iPhone is ok
[self presentViewController:picker animated:YES completion:nil];
}
Сообщение об ошибке:
*** Завершение работы приложения из-за необработанного исключения «NSInvalidArgumentException», причина: «Приложение пыталось представить нулевой контроллер модального представления на цели».
Я потратил немного времени, чтобы понять это, но не смог разобраться. Любые идеи или предложения будут с благодарностью!
picker
nil
? Прочтите документацию дляMFMailComposeViewController
. Вам нужно проверить, может ли устройство отправлять электронную почту, прежде чем пытаться использовать этот класс. - person rmaddy   schedule 04.05.2016