gpt4 book ai didi

ios - 当 View Controller 被关闭时,它应该清空内存吗?

转载 作者:可可西里 更新时间:2023-11-01 04:22:04 29 4
gpt4 key购买 nike

我想了解 Objective-C 中的内存管理,我发现这并不容易,因为我在 Objective-C 和 ARC 方面还很陌生,而且我主要习惯于编写我没有的脚本语言处理那么多(或根本不处理)内存管理。

我正在开发的应用程序在按下按钮后从代码中呈现一个 viewController(附加了 xib 文件)。在这个 View Controller 中,我实例化了几个 View ;我记录了一系列图像(来自相机的照片,保存到磁盘),我将其转换为电影,并且我有一个 gps 跟踪器(mapKit),它在屏幕上显示了一个小 map 。完成所有操作后,我可以按下调用 [self dismissViewControllerAnimated:YES completion:nil];

的“完成”按钮

viewController 动画回到我的 rootViewController,因为我在 viewController 的 dealloc 方法中放置了一条 NSLog 消息,我可以确认这个 viewController 正在被关闭释放。

问题是我看到在使用应用程序(使用包括在 MapKit map 上拍照和记录 gps 位置以及生成电影文件)后内存增加到大约 80 MB,然后下降到大约 70MB当我按下“完成”时,viewController 关闭并且应用程序返回到我的 rootViewController。我可以再次呈现相同的 viewController,使用它并关闭它,应用程序仍会占用大约 70MB 的内存,这不会下降。在我看来,这并不是真正的内存泄漏,因为在那种情况下,我希望每次实例化和关闭 viewController 时内存都会稳定增加。即使我的 rootViewController 中有不同的按钮,它们都实例化了我的 viewController 类的一个新的和唯一的实例,情况也并非如此。

我想知道:是否有我应该寻找的东西或者这是预期的行为?也许该应用程序正在缓存类以供将来使用?正确执行内存管理后,我是否应该期望应用程序在关闭唯一显示的 viewController 后恢复到“原始”内存状态(在本例中约为 4 MB)?

最佳答案

如果您在 Xcode 中看到这种内存增加,而不是在使用仪器时,那么 the answer I have come up with is in this answer.

您可以阅读整个答案,它非常有深度。但长话短说,在 Xcode 中,您会看到操作系统“分配”给您的应用程序使用的内存量。每当您的应用尝试分配某些东西时,这都会增加。它不会减少得那么快,因为操作系统会进行性能猜测,认为您的应用程序将来可能需要更多内存。操作系统将内存“给定”给您的应用程序比将其拿走并稍后归还更快。

关于ios - 当 View Controller 被关闭时,它应该清空内存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30246307/

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