загрузка фотографий приложения iphone на сервер из потоков приложений - PullRequest
0 голосов
/ 10 марта 2010

У меня есть приложение, которое должно загрузить как минимум 5 фотографий на сервер с помощью API-вызова, доступного на сервере. Для этого я планирую использовать потоки, которые будут заботиться о загрузке фотографий, и основной процесс может продолжаться с навигацией по представлениям и т. Д. Я не могу решить, нормально ли создавать пять отдельных потоков в iphone или использовать один поток это сделает загрузку. В более поздних случаях очевидно, что это станет довольно медленным. По существу, HTTP-запрос POST будет отправлен на сервер с объектом NSMutableURLRequest с использованием NSCOnnection.

Чем больше потоков, тем больше сложностей и проблем с синхронизацией, но я могу попытаться написать код настолько аккуратно, насколько это возможно, если это означает лучшую производительность, чем отдельный поток, который прост, но действительно ограничивает производительность. Любой, у кого есть опыт в этом виде приложения. ??

Ответы [ 2 ]

1 голос
/ 10 марта 2010

Я бы предложил использовать один дополнительный поток и ставить в очередь загрузки, один за другим. В конечном итоге вы закроете сетевые интерфейсы, если попытаетесь одновременно выполнить 5 загрузок. Помните, что iPhone часто будет подключен к сети 3G или даже EDGE, а не к WiFi, поэтому загрузка фотографий может быть очень медленной и даже медленной, если их одновременно 5.

Возможно, вы могли бы извлечь выгоду из использования NSOperation и NSOperationQueue, чтобы приятно обрабатывать уродливые потоки для вас. Завершите процесс загрузки в NSOperation, а затем поставьте в очередь 5 из них для каждого изображения. Должно работать очень хорошо.

0 голосов
/ 16 марта 2010

Jasarien спасибо за бит по NSOperation и NSOperationQueue. Это просто упростило в значительной степени. Но сейчас я столкнулся с серьезной проблемой. Я порождаю лишнюю тему из основной темы. Этот поток ставит в очередь каждую операцию загрузки изображения. Таким образом, этот поток помещает в очередь 5 операций загрузки изображений в очередь. Это абсолютно нормально при работе с Mac PC. Теперь, когда я отправляю приложение на устройство, загрузка только одного рисунка прошла успешно, а остальные не удаются. Большинство случаев сбоя происходит из-за ошибки тайм-аута сервера. Поэтому в основном мне интересно, обеспечивает ли NSOperationQueue только одну операцию за раз или нет? Я имею в виду, если идет загрузка первой картинки, и говорю, что следующая операция уже добавлена ​​в очередь. Будет ли он создавать дополнительный поток для второй операции, пока выполняется первая? Я думаю, как следует из названия, он должен ждать в очереди, пока предыдущий не будет сделан. Не уверен, как это сделать. Я загружаю фото, которые сняты на камеру iphone.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...