2

我有一个问题:我如何理解这一点:

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

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

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

谢谢

4

1 回答 1

1

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

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

一旦您从NSURLConnection. 为此,请设置您的NSURLConnection使用本指南。重要的是正确设置您的NSURLConnectionDelegate请参阅有关协议的此文档

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

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

一旦有了NSData可用的资源,您就可以随心所欲地使用它。您保存将此数据保存到磁盘,请参阅NSData上的文档以了解如何执行此操作。

于 2012-11-25T13:32:42.357 回答