【问题标题】:Download stored in RAM?下载存储在 RAM 中?
【发布时间】:2012-11-25 13:17:32
【问题描述】:

我有一个问题:我是如何理解的:

“iOS 注意:NSURLDownload 类在 iOS 中不可用,因为不鼓励直接下载到文件系统。请改用 NSURLConnection 类。有关更多信息,请参阅“使用 NSURLConnection”。”

无法将下载内容直接存储在文件系统中。但是,如果我改用“NSURLConnection”并下载一个文件(可以说它是 500MB),它是存储在 RAM 中还是存储在存储系统中的临时文件夹中?

如果它存储在 RAM 中,是否可以直接将其保存到磁盘?

谢谢

【问题讨论】:

    标签: ios download nsurlconnection


    【解决方案1】:

    这意味着不鼓励直接下载到文件系统上的文件,这是桌面计算机常见的约定,但在 iOS 上很少见。

    数据不会总是存储在 RAM 中,文件的大小可能远远超过设备上可用的 RAM 量,因为它相当有限。来自NSURLConnection 的响应将存储在缓存中;它仍被写入磁盘,但操作系统会跟踪它,而不是您的应用程序。因为这是一个操作系统实现细节,应用程序开发人员不应该关心,所以无法保证这些数据将存储在哪里,因此尽量不要通过文件系统直接访问它。

    一旦您收到来自NSURLConnection 的数据,您当然可以在您的控制下将数据保存到磁盘。为此,请使用this guide 设置您的NSURLConnection。重要的是正确设置您的NSURLConnectionDelegateSee this documentation regarding the protocol.

    您感兴趣的方法是这个(无论如何这是必需的方法!)

    - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
    

    一旦您拥有了NSData,您就可以随心所欲地使用它。您将这些数据保存到磁盘,请参阅the documentation on NSData 了解如何执行此操作。

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 2019-10-04
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      相关资源
      最近更新 更多