2014-01-28 4 views
0

я получаю эту аварию на прошивке 7App разбился используя MFMailComposeViewController

Assertion failed: (result == KERN_SUCCESS), function + [XPCMachSendRight wrapSendRight:], file /SourceCache/XPCObjects/XPCObjects-46/XPCMachSendRight.m, line27. 

шаги, которые ведут к этой аварии являются,

  1. Открытия MFMailComposeViewController
  2. Нажмите домой кнопка
  3. App разбился.

Вот аварии отчет,

Thread 0 Crashed: 
0 libsystem_kernel.dylib   0x393bf1fc 0x393ac000 + 78332 
1 libsystem_pthread.dylib   0x39426a4f 0x39423000 + 14927 
2 libsystem_c.dylib    0x39370083 0x39326000 + 303235 
3 libsystem_c.dylib    0x39370035 0x39326000 + 303157 
4 libsystem_c.dylib    0x3934fc67 0x39326000 + 171111 
5 XPCObjects      0x375a7905 0x375a2000 + 22789 
6 UIKit       0x317b41f9 0x3128d000 + 5403129 
7 UIKit       0x31529d45 0x3128d000 + 2739525 
8 QuartzCore      0x30f54af9 0x30f13000 + 269049 
9 QuartzCore      0x30f1b077 0x30f13000 + 32887 
10 QuartzCore      0x30f1ae1b 0x30f13000 + 32283 
11 UIKit       0x31318deb 0x3128d000 + 572907 
12 UIKit       0x31318d53 0x3128d000 + 572755 
13 CoreFoundation     0x2eaddf6f 0x2ea3e000 + 655215 
14 CoreFoundation     0x2eadb8fb 0x2ea3e000 + 645371 
15 CoreFoundation     0x2eadbbb5 0x2ea3e000 + 646069 
16 CoreFoundation     0x2ea4653d 0x2ea3e000 + 34109 
17 CoreFoundation     0x2ea4631f 0x2ea3e000 + 33567 
18 GraphicsServices    0x337762e7 0x3376f000 + 29415 
19 UIKit       0x312fd1e1 0x3128d000 + 459233 
20 MYAPP       0x0002d5c9 main (main.mm:18) 
21 MYAPP       0x0002d524 start + 36 

Я нашел подобная проблема упоминается здесь: app get crashed while navigating to RootViewController from Message popup

сбой редко. Я не знаю, что такое [XPCMachSendRight wrapSendRight:] это и как предотвратить его от сбоя моего приложения?

+2

Вы должны опубликовать некоторые соответствующий код ... – bgfriend0

+0

почему вы используют частную инфраструктуру, любая специальная причина есть – codercat

ответ

3

Перед использованием класса MFMailComposeViewController вы всегда должны проверить, действительно ли текущее устройство настроено на отправку электронной почты с использованием метода canSendMail. Если устройство пользователя не настроено для доставки электронной почты, вы можете уведомить пользователя или просто отключить функции отправки электронной почты в своем приложении. Вы не должны пытаться использовать этот интерфейс, если метод canSendMail возвращает NO.

Используйте этот код ....

if ([MFMailComposeViewController canSendMail]) 
{ 
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init]; 
mailer.mailComposeDelegate = self; 
[mailer setSubject:@"A Message from Bloomingkids"]; 
NSArray *toRecipients = [NSArray arrayWithObjects:@"[email protected]", nil]; 
[mailer setToRecipients:toRecipients]; 
UIImage *myImage = [UIImage imageNamed:@"bloomingKidsLogo.png"]; 
NSData *imageData = UIImagePNGRepresentation(myImage); 
[mailer addAttachmentData:imageData mimeType:@"image/png" fileName:@"Images"]; 
NSString *emailBody = @"Have you seen the Bloomingkids web site?"; 
[mailer setMessageBody:emailBody isHTML:NO]; 
[self presentViewController:mailer animated:YES completion:nil]; 
} 
else 
{ 
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Failure" 
               message:@"Your device doesn't  support  the composer sheet" 
               delegate:nil 
             cancelButtonTitle:@"OK" 
             otherButtonTitles: nil]; 
[alert show]; 
} 

Добавить любую учетную запись электронной почты в устройстве первого средство настроить учетную запись электронной почты ...

Смежные вопросы