gpt4 book ai didi

ios - 使用UIWebView删除vc后内存没有释放,但分析工具未检测到泄漏

转载 作者:行者123 更新时间:2023-11-28 22:07:16 25 4
gpt4 key购买 nike

我有一个简单的应用程序,它只是加载一个包含 UIWebView 的 View Controller 。在运行它时,我注意到 XCode 报告的内存量从分配 vc 之前的 2 MB 增加到创建后的 12.5Mb。但是在删除 vc 之后,内存量并没有减少,实际上它甚至进一步增加到 13Mb。然而 XCode 的泄漏分析器没有报告任何问题。

View Controller 是在应用程序的主(且仅是其他) View Controller 中创建和销毁的:

- (void) viewDidAppear:(BOOL)animated
{
static BOOL presented = NO;
if (!presented)
{
PresentationViewController *vc = [[PresentationViewController alloc] initWithPresentationId:@"index.html"];

__weak typeof(vc) weakVc = vc;
[vc setExitBlock:^{
[[weakVc presentingViewController] dismissViewControllerAnimated:YES completion:nil];
}];

[self presentViewController:vc animated:YES completion:nil];
presented = YES;
}
}

View Controller 的 dealloc 被调用,因此它被销毁,是的, WebView 委托(delegate)被取消。

- (void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
[self.webView stopLoading];
self.webView.delegate = nil;
}

为什么删除 View Controller 后内存消耗没有下降?

最佳答案

  1. 尝试重复该 Action 3 次或更多次,看看内存是否仍在继续增长或保持在固定值附近。 iOS 有时会缓存 View 以供进一步使用,即使您将其删除也是如此。
  2. 检查您的项目 Scheme,看看您是否启用了“启用僵尸对象”,这可能会导致内存疯狂增长。
  3. 尝试使用工具,将 Allocations Track Display Style 设置为 Active Allocation Dstribution,Mark Generation->load the webview->quit the webview->Mark Generation->repeat 3 times。通过这种方式,您可以找到内存分配中剩余的内容以及导致它的代码。

关于ios - 使用UIWebView删除vc后内存没有释放,但分析工具未检测到泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23663769/

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