Как я могу избежать повреждения данных с несколькими экземплярами NSUrlConnection - PullRequest
0 голосов
/ 05 декабря 2010

Я написал приложение для 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

Заранее спасибо за любую помощь.

1 Ответ

1 голос
/ 05 декабря 2010

Когда вызывается соединение вашего делегата: didReceiveData: метод, вы будете иметь экземпляр соединения в качестве первого параметра.Поэтому вам нужно использовать это, чтобы отслеживать, какое соединение только что получило данные.

Пример Apple поддерживает один экземпляр NSMutableData.Вашему коду потребуется несколько экземпляров, по одному для каждого активного соединения.

Или, конечно, вы можете иметь отдельный объект делегата (отдельный экземпляр) для каждого соединения.Это может быть проще.

...