MFMailComposer Exc_bad_access - 可能与初始化有关

时间:2011-11-15 19:02:45

标签: iphone mfmailcomposeviewcontroller

在视图控制器中,我有一个内部调用IBAction并在内部调用

的按钮
        [self showEmailModalView:FinalEmail];

现在......在showEmailModalView中我有

-(void) showEmailModalView:(NSString *)email{

    MFMailComposeViewController *mvc =[[[MFMailComposeViewController alloc] init]autorelease];
    mvc.mailComposeDelegate = self; 

    NSArray *mails = [[NSArray  arrayWithObject:email]autorelease];

    [mvc setToRecipients:mails];

    NSString*emailBody =[NSString stringWithFormat:@" "];

    [mvc setMessageBody:emailBody isHTML:YES]; 

    mvc.navigationBar.barStyle = UIBarStyleBlack; 
    [[self navigationController] presentModalViewController:mvc animated:YES];

}

然后

-(void)mailComposeController:(MFMailComposeViewController*)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError*)error
{
 [[self navigationController] dismissModalViewControllerAnimated:YES];
} 

现在它工作正常......对于电子邮件或删除或类似的所有场景,但在完成代码后,模拟器只会抛出一个exec_bad_access然后什么都不做....你可以帮忙吗?

PS:我还发现,如果您正在向mvc发布上述声明,则会调用错误。蚂蚁想法。

更新

我确实安装了只有一次更改的应用程序...... 我在头文件中初始化了mvc 然后只使用相同的语句。所以现在我再也没有得到exec_bad_access错误......我觉得它被nsZOMBIES吓坏了......哈哈......感谢你的帮助和支持..伙计......你们两个......

1 个答案:

答案 0 :(得分:1)

您不应该自动释放此对象,它已经自动释放

NSArray *mails = [[NSArray  arrayWithObject:email ]autorelease];

而不是改为:

NSArray *mails = [NSArray  arrayWithObject:email];