ios - 已调用 Dealloc 但未释放内存

标签 ios memory-management uiviewcontroller storyboard

我在我的应用程序中使用 Storyboards,我注意到以下几点。 View Controller A 是根 VC,推送 View Controller B,后者随后呈现模态 VCC。当用户按下按钮时,我有一个从 VCC 到 VCA 的 unwind segue。 将日志放在 VCB 和 VCC 的 dealloc 方法上,您会看到它们在发生 unwind segue 时被调用,所以这很好。但是,此时没有分配的内存被释放。这是正常行为吗,内存不会立即释放,而是稍后释放?

最佳答案

找到了我自己问题的答案。通过 View Controller B 和 C,我使用了一堆图像,我已经加载了这些图像

[UIImage imageNamed:@"imageName"];

它缓存了我使用过的所有图像,以便稍后更快地重新加载它们,因此在 View Controller 被释放时不会释放该内存。

另一种选择是使用

[UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"imageName" ofType:@"png"]];

它不缓存图像,然后在释放时释放所有内存。但我将使用第一个选项,因为我将通过应用程序频繁使用这些图像。

这篇文章很有用 https://stackoverflow.com/a/17569993/5009180

关于ios - 已调用 Dealloc 但未释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33319942/

相关文章:

ios - 如何让 uitableview 知道在哪里滚动未创建的 View

ios - 如何向右滑动隐藏 UITableView 中的删除按钮?

ios - AVAudioPlayer 被释放,而键值观察者仍然在其中注册

android - 如何以编程方式计算已安装应用程序的所有缓存大小?

ios - nil 模态视图 Controller 错误

用于真正的跨平台应用程序/应用程序的 Java 解决方案(框架/库/API)

c++ - Wt:1.5 GB 用于运行论坛(即使连接了单个用户)。正常吗?

c++ - 安全移动 C++ 对象

ios - 如何从我的 appDelegate 访问我的 viewController?苹果系统

ios - 无法检查函数的引用相等性;这里的操作数类型为 'UIBarButtonItem' 和 '(UIBarButtonItem) -> ()'