我编写了一个 iOS 应用程序,它多次调用 NSUrlConnection 以从网络下载图像数据。有时,一个 NSUrlConnection 在另一个 NSUrlConnection 开始之前尚未完成。我看到损坏的 jpeg 数据,我认为这是因为我的 didReceiveData 委托正在保存来自两个单独的 NSUrlConnections 的数据,并将两个 jpeg 数据流一起合并到一个数据变量中,从而导致损坏。

我的问题是:避免这种情况的最佳方法是什么?似乎没有办法让每个 NSUrlConnection 实例保存到单独的数据变量,或者让每个实例等到前一个实例完成后再保存。

我的代码基本上遵循 Apple 的示例,只是我多次调用 loadData 函数来创建 NSURLRequest 和 NSURLConnection。 http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html

预先感谢您的任何帮助。

有帮助吗?

解决方案

当您的委托的连接:didReceiveData:调用方法时,您将把连接实例作为第一个参数。因此,您需要使用它来跟踪哪个连接刚刚接收到数据。

Apple 的示例维护一个 NSMutableData 实例。您的代码将需要多个实例,每个实例对应一个活动连接。

或者,当然,您可以为每个连接拥有一个单独的委托对象(一个单独的实例)。这可能会更容易。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top