1

NSOperationQueue用来管理一个相当长的 iOS 应用程序的阶段,所以我想异步管理它。在那个阶段,我通过直接使用calloc函数在 C 中分配大数组。大我的意思是一个 1024x256 二维数组的浮点数和类似的东西。

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

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

所以我想知道由操作队列管理的线程与主线程相比是否有一些不同的限制,如果有什么更好的办法来解决这个问题。

4

1 回答 1

1

据我所知,没有任何限制。但是,您可能会遇到可用 RAM 的边缘。由于 iOS 不做虚拟内存,当内存不足时,它会向其他应用程序发送警告以释放 RAM。这可能是您问题的根源。

使用仪器来分析您正在使用多少 RAM。如果它超过大约 20MB 左右,那么您可能会因为内存使用过多而面临被终止的危险。

于 2011-07-08T23:46:52.303 回答