如何避免 NSUrlConnection 的多个实例的数据损坏
-
08-10-2019 - |
题
我编写了一个 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 实例。您的代码将需要多个实例,每个实例对应一个活动连接。
或者,当然,您可以为每个连接拥有一个单独的委托对象(一个单独的实例)。这可能会更容易。
不隶属于 StackOverflow