gpt4 book ai didi

ios - MFMailComposeViewController 从不解除分配

转载 作者:行者123 更新时间:2023-11-29 12:45:45 24 4
gpt4 key购买 nike

我正在展示一个像这样的 MFMailComposeViewController:

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

并使用委托(delegate)方法删除它:

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

问题是 VC 永远不会被释放,在我的应用程序中打开和关闭“发送电子邮件”功能会占用内存但不会释放它。

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

最佳答案

为什么要设置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

关于ios - MFMailComposeViewController 从不解除分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23722847/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com