我正在主线程上读取一个非常大的文件到内存中(不仅仅是简单的dataWithContentsOfFile:
方法,我还做了一些数据操作),我的应用程序崩溃了。在将此过程移至后台线程后,应用程序不再崩溃。唯一发生的事情是NSData
我得到的是nil
。
是否可能只有我的后台线程被中断而不影响主线程,或者我错过了什么?此外,我可以依靠此行为,并在NSData
为nil
时显示错误消息,而不会让应用崩溃吗?提前谢谢。
修改
我得到的日志是:
malloc: * mmap(size = 629800960)失败(错误代码= 12) 错误:无法分配区域 * *在malloc_error_break中设置断点以进行调试
我使用的文件大约250 MB。
我知道为什么它在主线程上崩溃了。我的问题是,为什么它不会在辅助线程上崩溃?
答案 0 :(得分:0)
我想它可能取决于崩溃,但如果是内存不足的问题(你可以使用太多内存或创建太多对象),它将会崩溃整个应用程序。
您应该尝试使用较小的文件测试应用程序并查看其行为。