1

我在主线程上将一个非常大的文件读入内存(不仅仅是简单的dataWithContentsOfFile:方法,我也在做一些数据操作),我的应用程序崩溃了。在我将此进程移至后台线程后,该应用程序不再崩溃。唯一发生的事情是NSData我得到的是nil.

是否有可能只有我的后台线程被中断而不影响主线程,或者我错过了什么?另外,我可以指望这种行为并在 is 时只显示一条错误消息NSDatanil而不会使应用程序崩溃吗?先感谢您。

编辑:

我得到的日志是:

malloc: * mmap(size=629800960) 失败(错误代码=12) 错误:无法分配区域 * * 在 malloc_error_break 中设置断点进行调试

我使用的文件大小约为 250 MB。

我知道为什么它在主线程上崩溃了。我的问题是,为什么它没有在辅助线程上崩溃?

4

1 回答 1

0

我想这可能取决于崩溃,但如果是内存不足的问题(你可能使用了太多的内存或创建了太多的对象),它将导致整个应用程序崩溃。

您应该尝试使用较小的文件测试应用程序并查看其行为方式。

于 2013-08-06T09:29:02.143 回答