【问题标题】:Download multiple file (>1000) NSURlConnection cause crash下载多个文件 (>1000) NSURlConnection 导致崩溃
【发布时间】:2013-07-03 13:29:41
【问题描述】:

在我的应用程序中,我必须一次从服务器下载多个文件(超过 1000 个文件)。 我创建了操作队列来下载它们。但是我必须在主线程上启动 urlconnection 以便可以调用委托方法。一切正常,但在 600 个文件后应用程序崩溃而没有任何日志。

这是我正在使用的步骤:

  1. 创建nsurlconnection的操作。
  2. 向队列添加操作。
  3. 在主线程上启动操作。 (我也试过[connection scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];,但效果不错。)

但每次超过 500 个文件后,应用程序都会崩溃。 欢迎任何帮助。

【问题讨论】:

  • 你同时运行多少?下载文件后,您将如何处理这些文件?它们有多大?
  • 我目前正在运行 4 个文件。下载后我将它们保存到 doc 目录。其中一些超过 3o Mb,但大多数在 10 到 20 Mb 左右
  • 当您保存时,您正在将每个数据块写入文件(使用文件句柄或其他东西),或者您正在将所有数据累积在内存中,然后将其写入磁盘一旦完成?
  • 下载文件后,我将其写入磁盘。
  • 你有没有找到任何解决方案,因为我也面临同样的问题。

标签: ios download nsurlconnection


【解决方案1】:

每次连接接收到数据(通过connection:didReceiveData: 通知委托)您应该立即将该数据写入磁盘。这样可以确保在任何时候都在内存中保存最少的数据量。如果您不这样做并且同时下载多个大文件,则很容易导致内存不足的情况,从而导致应用程序终止。

【讨论】:

  • 感谢@wain 的回答。我也尝试过这种方法。我在 didRecieveData 中附加了数据并将数据写入磁盘,但得到了相同的结果。 500个文件后它仍然崩溃。:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多