当我为不同的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,如果用户没有任何邮件帐户,则会发生这种情况,系统会提供默认的“No mail accounts”警报。
但是当我使用Base SDK 4.0构建它并将其部署到3.0 OS时,如果用户没有任何邮件帐户,系统不会显示相同的警报,而是presentModalViewController
崩溃。
MFMailComposeViewController's
初始化返回nil,但在某些地方presentModalViewController
智能地在SDK 3.0的情况下发出警报但在4.0上部署了SDK 4.0失败并崩溃。
是否有人遇到过这个问题/任何想法实际发生了什么。
谢谢, 拉吉
答案 0 :(得分:8)
我遇到同样的问题时发现了这个问题。
我认为这是因为,如果手机中没有设置邮件帐号。 [[MFMailComposeViewController alloc] init]
返回nil。
因此,在呈现视图控制器之前,我们需要检查它是否为零。
答案 1 :(得分:7)
我刚刚在iOS 4上进行了一些测试,并且发现了你的帖子。我无法弄清楚为什么它会返回零,所以谢谢你的回答。至于你的问题的答案,你只需要检查它是否为零。如果它为零,则不显示模态视图控制器。它仍会显示弹出窗口。