Ipad 在出现ModalViewController:崩溃后释放MFMAilComposeViewController

Ipad 在出现ModalViewController:崩溃后释放MFMAilComposeViewController,ipad,ios,memory-management,mfmailcomposeviewcontroller,Ipad,Ios,Memory Management,Mfmailcomposeviewcontroller,我有以下代码块,在模拟器和大多数设备上都可以正常工作,但在某些设备上(都在相同的iOS版本4.2.1上),当应用程序到达[mailComposer release]调用时会崩溃,有人知道为什么会发生这种情况吗 MFMailComposeViewController *mailComposer = [[MFMailComposeViewController alloc] init]; mailComposer.mailComposeDelegate = self; [mai

我有以下代码块,在模拟器和大多数设备上都可以正常工作,但在某些设备上(都在相同的iOS版本4.2.1上),当应用程序到达
[mailComposer release]
调用时会崩溃,有人知道为什么会发生这种情况吗

    MFMailComposeViewController *mailComposer = [[MFMailComposeViewController alloc] init];
    mailComposer.mailComposeDelegate = self;
    [mailComposer setSubject:[self.webView stringByEvaluatingJavaScriptFromString:@"document.title"]];
    [mailComposer setMessageBody:[NSString stringWithFormat:@"Hello, \n\n Here is the link we discussed. \n %@", [self.webView.request URL]] isHTML:NO];
    [self presentModalViewController:mailComposer animated:YES];
    [mailComposer release];

我遇到了完全相同的问题,我真的不知道为什么会崩溃,因为presentModalViewController应该保留视图控制器。在与它斗争之后,我终于在我的视图控制器上添加了一个属性,该属性保留了对mfMailComposeViewController的引用,并且工作正常/

MFMailComposeViewController* mfMailComposeViewController;
@property (nonatomic, retain) MFMailComposeViewController *mfMailComposeViewController;
然后

MFMailComposeViewController* controller = [[MFMailComposeViewController alloc] init];
controller.mailComposeDelegate = self;
[controller setSubject:subject];
[controller setBody:body];
self.mfMailComposeViewController = controller;
[controller release];

好的,所以我在我的新iPad2的帮助下设法找出了导致我的问题的原因

问题是由于没有配置任何邮件帐户,只是添加了

if ([MFMailComposeViewController canSendMail])

在创建和呈现视图以防止崩溃之前,我在我的
else
块中添加了一个
UIAlertView
,让用户知道,如果不首先配置邮件帐户,他们就无法访问该功能。

presentModalViewController
保留其视图控制器,并在弹出时释放它,所以我不知道为什么这会导致崩溃。这也是我的理解,我刚刚想到的一件事。我正在使用
showFromBarButtonItem:animated:
UIActionSheet
中显示一个“电子邮件链接”按钮。当popover被取消并且模态视图被呈现时,会不会有某种UIKit冲突?太糟糕了!并不是说这是一个糟糕的解决方案,我本来也打算做同样的事情,但你必须这么做真是太糟糕了。。。说真的,这对我来说没什么意义。我投了赞成票,等着看是否有人能透露更多的信息。