我正在编写一个应用程序,它会进行大量繁重的图像处理。
我有一个非常大的循环,平均执行时间超过一分钟。有时(有大图像)我收到内存警告,他的应用程序崩溃。我确信没有泄漏,因为当循环结束时,消耗的内存会被释放。
我在evey迭代中使用myImage = nil
来表示所有图像,但它没有任何区别。
我认为这个问题的根源在于,当系统空闲时 - 在我的函数调用之间,ARC只释放内存。我对吗?有没有办法强制ARC立即清理未使用的内存,而不等待我的方法结束?
答案 0 :(得分:0)
简单来说强制ARC无法强制ARC调用自动释放池,ARC的大多数时间内存问题都带有保留周期,所以你总是要确保你没有编写那些导致保留的代码周期!
答案 1 :(得分:0)
您需要在循环中添加@autoreleasepool,如下所示:
for (loop stuff) {
@autoreleasepool {
// code code code
}
}