我正在处理的iOS应用程序处理非常大的文件(最大的大小是2.7 gig),还有一些sqlite表,在下载大型文件后我会得到像这样的控制台消息:
Aug 24 14:50:28 unknown TheAppName[1407] <Warning>: Error opening database: 14 unable to open database file
发生的其他问题,加载视图(已经加载并显示)将导致崩溃,说“无法找到笔尖”。
应用程序可以在没有大文件的情况下运行,但它非常有用。我的问题是:大文件是否会导致某种内存问题,或者是否存在iOS对文件的某种限制?我在其他地方环顾四周,但我一直无法找到任何特定的内容。
答案 0 :(得分:1)
它在模拟器中是否有效,或者你在那里也遇到同样的问题?
我建议您使用带有ObjectAlloc工具的Instruments运行您的应用。您管理下载的方式可能会有一些泄漏。或者,设备上是否有可用于此文件的空间?
只要闪存上有足够的空间,其他人就可以成功下载大文件。您可以对此进行测试 - 有一些浮动的函数可以告诉您如何确定可用磁盘空间。
另一个想法:将文件写入磁盘,并在文件描述符上设置“F_NOCACHE”(fcntl)标志。这将导致写操作绕过“统一缓冲队列”,用于缓存磁盘块和其他内存使用,并将大大减轻系统本身的压力。
答案 1 :(得分:-1)
iOS应用的最大大小限制为2GB,这是限制导致所有错误,这也是您的应用崩溃的原因。我建议您将大尺寸文件上传到文件托管网站,并在需要时将它们流式传输到应用程序中。