我正在展示这样的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之后自行解除分配。
答案 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有内存泄漏问题。这不仅是你的问题,我们都有同样的问题。