我在我的应用程序中使用 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"]];
它不缓存图像,然后在释放时释放所有内存。但我将使用第一个选项,因为我将通过应用程序频繁使用这些图像。
关于ios - 已调用 Dealloc 但未释放内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33319942/