MFMailComposeViewController永远不会释放

时间:2014-05-18 14:14:03

标签: ios automatic-ref-counting

我正在展示这样的MFMailComposeViewController:

mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[self presentViewController:mc animated:YES completion:NULL];
 mc = nil;

并使用委托方法删除它:

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

问题是VC永远不会被解除分配,并且打开和关闭"发送电子邮件"我的应用程序中的功能会占用内存,但不会释放它。

我错过了什么?我不知道我怎么能以任何其他方式做到这一点,并且所有其他VC在自己调用dismissviewcontroller之后自行解除分配。

1 个答案:

答案 0 :(得分:1)

为什么设置 mc = nil ;紧跟在 presentViewController:mc

之后

您应该执行以下操作: -

mc = [[MFMailComposeViewController alloc] init];
mc.mailComposeDelegate = self;
[self presentViewController:mc animated:YES completion:NULL];

然后

- (void) mailComposeController:(MFMailComposeViewController *)controller 
            didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error
{
 [self dismissViewControllerAnimated:YES completion:^{
    mc=nil;
}];
}

顺便说一下,MFMailComposeViewController有内存泄漏问题。这不仅是你的问题,我们都有同样的问题。

  1. Cancelling MFMailComposeViewController causes a memory leak?

  2. Memory leak for MFMailcomposeviewcontroller on send mail