0

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

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

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

提前感谢您的帮助。

4

1 回答 1

1

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

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

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

于 2010-12-05T06:57:58.997 回答