如何避免多个NSUrlConnection实例的数据损坏

时间:2010-12-05 06:50:51

标签: cocoa-touch ios nsurlconnection nsurlrequest nsmutabledata

我编写了一个iOS应用程序,多次调用NSUrlConnection从Web下载图像数据。有时,一个NSUrlConnection在另一个启动之前尚未完成。我看到损坏的jpeg数据,我认为这是因为我的didReceiveData委托从两个单独的NSUrlConnections保存数据并将两个jpeg数据流一起整理成一个数据变量,从而导致损坏。

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

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

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

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