使用MFMailComposer发送电子邮件后无法解释的崩溃

时间:2011-07-25 08:42:16

标签: iphone

在我的应用中,我有电子邮件发送代码。

这是非常普通的(粘贴在问题末尾)。

以下顺序: - 单击我的应用程序的“EMAIL”按钮,该按钮调用sendEmail方法 - 单击“收件人”字段 - 键入电子邮件地址 - 单击MFMailComposer发送按钮 - 电子邮件已发送(并且已到达 - 我通常设置自己的电子邮件地址) - 应用程序崩溃...使用此堆栈爬行:

2011-07-25 11:21:21.179 MyApp[2769:3d0b] -[__NSCFString searchQuery:returnedResults:]: unrecognized selector sent to instance 0x3c3410
2011-07-25 11:21:21.201 MyApp[2769:3d0b] uncaughtExceptionHandler
2011-07-25 11:21:21.202 MyApp[2769:3d0b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFString searchQuery:returnedResults:]: unrecognized selector sent to instance 0x3c3410'

我注意到以下情况: 1.当我输入To地址时,调试器输出显示 CPSqliteStatementSendResults:中断 2.如果我添加 setToRecipients (有效地“硬编码” To 电子邮件地址),应用程序不会崩溃......

有什么想法吗? (以下代码)

- (void)sendEmail:(id)sender {
    MFMailComposeViewController *controller = [[MFMailComposeViewController alloc] init];
    controller.mailComposeDelegate = self;

    [controller setSubject:@"The Subject"];

    [self presentModalViewController:controller animated:YES];
    [controller release];
}

- (void)mailComposeController:(MFMailComposeViewController*)controller  
          didFinishWithResult:(MFMailComposeResult)result 
                        error:(NSError*)error;
{
    switch (result)
    {
        case MFMailComposeResultCancelled:
            break;
        case MFMailComposeResultSaved:
            break;
        case MFMailComposeResultSent:
            break;
        case MFMailComposeResultFailed:
            NSLog(@"Sending Failed");
            break;
        default:
            NSLog(@"Message not sent");
            break;
    }
    [self dismissModalViewControllerAnimated:YES];
}

1 个答案:

答案 0 :(得分:0)

尽量不要立即释放MFMailComposeViewController但是在他的委托方法didFinishWithResult中(最后)。