ios - 下载存储在RAM中?

标签 ios download nsurlconnection

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

"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 .重要的是正确设置您的 NSURLConnectionDelegateSee 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/

相关文章:

iphone - 使用 addTarget 将 UIView 中的 UIButton 定位为目标

c# - 文件未完全下载

iphone - CFHTTPCookieGetCreateDate 在此操作系统版本 (iOS4) 中已弃用

当 key 不是字符串时,iOS HTTP Post 方法不起作用

ios - 如何使用 AFnetworking 发送 post 请求?

ios - 白标 iOS 应用程序

Java:尝试从服务器下载 jar 文件:线程 "main"java.io.IOException 中出现异常:服务器返回 HTTP 响应代码:URL 为 403

iphone - 如何在 iPhone 上从 URL 接收数据?

ios - 如何在 Swift 3 中编辑表格单元格的内容

c# - 是否有任何选项可以限制每次下载的下载带宽?