MFMailComposeViewController
カスタム クラス (viewController ではない) から提示しています。iOS5 では正常に動作していますが、iOS6 では構成シートを表示した直後にクラッシュします。ビューを表示した後に dealloc メソッドが呼び出されるという問題を発見したため、 self は deallocatingです。このため、mailcomposer は自分自身でデリゲート メソッドを呼び出すことができないため、クラッシュしています。私はそれに対する解決策を得ませんでした。ARCを使用しています。デリゲート メソッドが呼び出されるまで割り当てを解除しないようにするにはどうすればよいですか?self
-(void)shareOnViewController:(UIViewController *)viewController completion:(ShareCompletionHandler)completion
{
if ([MFMailComposeViewController canSendMail]) {
MFMailComposeViewController *mailer = [[MFMailComposeViewController alloc] init];
mailer.mailComposeDelegate = self;
mailer.modalPresentationStyle = UIModalPresentationPageSheet;
[mailer setSubject:[self.userInfo objectForKey:@"title"]];
NSData *imageData = UIImagePNGRepresentation([self.userInfo objectForKey:@"image"]);
if (imageData) {
[mailer addAttachmentData:imageData mimeType:@"image/png" fileName:@"AttachedImage"];
}
NSURL *emailBody = [self.userInfo objectForKey:@"url"];
if (![emailBody isEqual:@""]) {
[mailer setMessageBody:[emailBody absoluteString] isHTML:NO];
}
[viewController presentModalViewController:mailer animated:YES];
} else {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Unable to send mail"
message:@"Device is not configured to send mail"
delegate:nil
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
}
self.completionHandler = completion;
}