【问题标题】:NSURLConnection directly writes to fileNSURLConnection 直接写入文件
【发布时间】:2011-11-03 17:11:57
【问题描述】:

在我的应用程序中,我正在读取远程文件(有时每个 32MB)并将它们写入文件(缓存)。

我想在缓存操作期间在我的应用程序中节省内存并将数据直接写入文件,或者如果可能的话以块的形式写入。

NSData* data = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&resp error:&error];

以后

[data writeToFile:file options:NSDataWritingAtomic error:&error2];

【问题讨论】:

    标签: objective-c ios nsurl


    【解决方案1】:

    只需使用NSURLConnection 的异步变体即可。在那里,您必须实现connection:didReceiveData:-方法等,它将卡盘中的数据传递给您的控制器。

    看看apple-example。他们使用自己的缓冲区来填充接收到的数据。在您的情况下,您应该将数据直接转发到您的文件中。

    【讨论】:

    • didReceiveData等方法有备注Available in iOS 2.0 through iOS 4.3。我还没有尝试在 iOS 5 中使用它。
    • 哇,你是对的,这对我来说也是一个新信息。但将来也会有NSURLConnection 的异步变体。有人知道替代品吗?
    • 不,我还不知道有什么新的替换方法。
    • 看起来其中一些委托方法已移至NSURLConnectionDelegateNSURLConnectionDownloadDelegate 协议。与上述connection:didReceiveData: 最接近的是- (void)connection:(NSURLConnection *)connection didWriteData:(long long)bytesWritten totalBytesWritten:(long long)totalBytesWritten expectedTotalBytes:(long long)expectedTotalBytes。看起来它正在为您写入文件,所以这实际上应该让 TS 更容易
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-28
    • 1970-01-01
    • 2020-11-04
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多