【问题标题】:Memory issue downloding a large file下载大文件的内存问题
【发布时间】:2012-03-14 22:06:54
【问题描述】:

我有一个无法解决的大问题。 我正在制作一个 iPad 应用程序并在其中下载一个 zip 文件(大文件,如 80Mb),并且在某些时候,如 75%,应用程序正在崩溃...... 我执行了配置文件,我可以看到内存是如何随着下载而增长的,所以,这显然是一个内存问题。 我的问题是,我该如何正确解决这个问题?我能以某种方式释放一些内存吗? 告诉我是否需要在这里放一些源代码并提前谢谢你! 问候!

【问题讨论】:

    标签: objective-c ipad memory download


    【解决方案1】:

    您需要使用NSOutputStream 并将其直接写入磁盘,而不是将其保存在内存中直到完成下载。这种方法将减少运行时内存的使用并解决您的崩溃问题。

    在 API 参考中查看此方法

    + (id)outputStreamToFileAtPath:(NSString *)path append:(BOOL)shouldAppend
    

    这里有一些关于 Streams 的参考: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSOutputStream_Class/Reference/Reference.html

    https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSInputStream_Class/Reference/Reference.html

    【讨论】:

    • 这太棒了!但我忘了告诉你我需要取消归档,并且需要为此使用内存。谢谢你的回答!
    • @Oscar:“取消归档”是什么意思?你能在 4kB 的块中进行操作吗?
    • 抱歉,解压...我对自己的英语水平感到困惑,;)
    【解决方案2】:

    不要将下载的字节保存在内存中,而是按照接收它们的顺序将它们写入磁盘。如果你不知道如何,ASIHTTPRequest 可以帮助你。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 2016-02-18
      • 2022-01-11
      • 1970-01-01
      相关资源
      最近更新 更多