2011-07-08 64 views
1

我使用NSOperationQueue來管理iOS應用程序的一個階段,這個階段很長,所以我想要異步管理它。在這個階段,我通過直接使用calloc函數在C中分配大數組。 隨着大我的意思是一個1024x256二維浮點數組和類似的東西。NSThread與主線程具有相同的內存權限嗎?

如果一切都駐留在主線程上,而不是在應用程序鎖定時計算,但一切正常,如果我將大部分移動到NSInvocationOperation,那麼我得到了很多奇怪的結果,有時候調試器會收到奇怪的消息在控制檯說明

沒有可用來編程,現在的內存:不安全的調用malloc

,所以我在想,如果相對於主線程的操作隊列管理的線程有一些不同的限制,萬一有什麼解決這個問題更好。

回答

1

沒有我知道的限制..但是,您可能正在觸及可用RAM的邊緣。由於iOS不會執行虛擬內存,因此當內存不足時,它會向其他應用發送警告以釋放RAM。這可能是你問題的根源。

使用工具來分析您使用的RAM數量。如果它大於20MB左右,那麼無論如何你都有可能因爲內存過多而被終止。

相關問題