4

当我为不同的 Base SDK 构建这段代码时,我遇到了问题:

MFMailComposeViewController *mail = nil;
mail = [[MFMailComposeViewController alloc] init];
NSString *description = @"Some mail string";
if([MFMailComposeViewController canSendMail])
{
    mail.mailComposeDelegate =self;
    [mail setSubject:story.title];
    [mail setMessageBody:[NSString stringWithFormat:(NSString *)kMessageBodyFormat,description,story.webLink] isHTML:NO];
}
[self presentModalViewController:mail animated:YES];
[mail release];
mail=nil;

当我使用 Base SDK 3.0 构建它时,如果MFMailComposeViewController's初始化返回 nil(如果用户没有任何邮件帐户),则系统会发出默认的“无邮件帐户”警报。

但是当我使用 Base SDK 4.0 构建它并将其部署到 3.0 操作系统时,如果用户没有任何邮件帐户,系统不会显示相同的警报,而是presentModalViewController崩溃。

MFMailComposeViewController's如果用户在 3.0 和 4.0 基本 SDK 中都没有任何邮件帐户,则初始化返回 nil,但presentModalViewController在 SDK 3.0 但部署在 3.0 上的 SDK 4.0 失败并崩溃的情况下,某个地方会智能地发出警报。

有没有人遇到过这个问题/任何想法实际上发生了什么。

谢谢,拉吉

4

2 回答 2

8

当我遇到同样的问题时,我发现了这个问题。

我认为是因为,如果手机中没有设置邮件帐户。[[MFMailComposeViewController alloc] init]回报为零。

所以在呈现视图控制器之前,我们需要检查它是否为 nil。

于 2011-10-16T21:11:11.047 回答
7

我刚刚在 iOS 4 上进行了一些 beta 测试,发现了你的帖子。我无法弄清楚为什么它返回 nil,所以感谢您的回答。至于你的问题的答案,你只需要检查它是否为零。如果它为 nil,则不显示模态视图控制器。它仍然会显示弹出窗口。

于 2010-06-21T20:50:07.523 回答