2011-07-08 28 views
1

我使用NSOperationQueue来管理iOS应用程序的一个阶段,这个阶段很长,所以我想要异步管理它。在这个阶段,我通过直接使用calloc函数在C中分配大数组。 随着大我的意思是一个1024x256二维浮点数组和类似的东西。NSThread与主线程具有相同的内存权限吗?

如果一切都驻留在主线程上,而不是在应用程序锁定时计算,但一切正常,如果我将大部分移动到NSInvocationOperation,那么我得到了很多奇怪的结果,有时候调试器会收到奇怪的消息在控制台说明

没有可用来编程,现在的内存:不安全的调用malloc

,所以我在想,如果相对于主线程的操作队列管理的线程有一些不同的限制,万一有什么解决这个问题更好。

回答

1

没有我知道的限制..但是,您可能正在触及可用RAM的边缘。由于iOS不会执行虚拟内存,因此当内存不足时,它会向其他应用发送警告以释放RAM。这可能是你问题的根源。

使用工具来分析您使用的RAM数量。如果它大于20MB左右,那么无论如何你都有可能因为内存过多而被终止。

相关问题