强制ARC工作

时间:2014-01-22 10:09:13

标签: ios cocoa automatic-ref-counting

我正在编写一个应用程序,它会进行大量繁重的图像处理。

我有一个非常大的循环,平均执行时间超过一分钟。有时(有大图像)我收到内存警告,他的应用程序崩溃。我确信没有泄漏,因为当循环结束时,消耗的内存会被释放。

我在evey迭代中使用myImage = nil来表示所有图像,但它没有任何区别。

我认为这个问题的根源在于,当系统空闲时 - 在我的函数调用之间,ARC只释放内存。我对吗?有没有办法强制ARC立即清理未使用的内存,而不等待我的方法结束?

2 个答案:

答案 0 :(得分:0)

简单来说强制ARC无法强制ARC调用自动释放池,ARC的大多数时间内存问题都带有保留周期,所以你总是要确保你没有编写那些导致保留的代码周期!

答案 1 :(得分:0)

您需要在循环中添加@autoreleasepool,如下所示:

for (loop stuff) {
    @autoreleasepool {
         // code code code 
    }
}