我有一个问题:我是如何理解的:
"iOS Note: The NSURLDownload class is not available in iOS, because downloading directly to the file system is discouraged. Use the NSURLConnection class instead. See “Using NSURLConnection” for more information."
无法将下载内容直接存储在文件系统中。但是,如果我改用“NSURLConnection”并下载一个文件(假设它大约 500MB),它是存储在 RAM 中还是存储在其他地方,例如存储系统中的临时文件夹?
如果它存储在 RAM 中,是否可以直接将其保存到磁盘?
谢谢
最佳答案
这意味着不鼓励直接下载到文件系统上的文件,这是台式机常见的约定,但在 iOS 上很少见。
数据不会总是存储在 RAM 中,文件的大小可能远远超过设备上可用的 RAM 量,因为它相当有限。来自 NSURLConnection
的响应将存储在缓存中;它仍然写入磁盘,但操作系统会跟踪它,而不是您的应用程序。因为这是一个操作系统实现细节,应用程序开发人员不应该关心它,所以不能保证这些数据将存储在哪里,因此尽量不要通过文件系统直接访问它。
一旦您从 NSURLConnection
接收到数据,您当然可以将数据保存到磁盘,在您的控制之下。为此,请使用 this guide 设置您的 NSURLConnection
.重要的是正确设置您的 NSURLConnectionDelegate
。 See this documentation regarding the protocol .
你感兴趣的方法就是这个(无论如何这是一个必需的方法!)
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
一旦您拥有可用的 NSData
,您就可以随心所欲地使用它。您将此数据保存到磁盘,请参阅 the documentation on NSData关于如何做到这一点。
关于ios - 下载存储在RAM中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13551388/