Таблица гидратов с использованием данных RSS-канала Задача C - PullRequest
0 голосов
/ 13 января 2012

У меня есть приложение Objective C, которое читает данные из RSS-канала, используя ASIHTTPRequest, и анализирует их, используя GDataXML. Есть две части возвращенных данных RSS, которые я хотел бы отобразить в таблице. Каждый элемент, возвращаемый в RSS-канал, имеет URL-адрес изображения и описание. Я хотел бы заполнить таблицу с изображением в одной ячейке и описанием в следующей ячейке справа от изображения. Моя текущая логика циклически повторяет каждый элемент, возвращаемый из ленты RSS, и заполняет объект UIImage, используя следующую логику:

UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.example.com/image.png"]]];
cell.image = [UIImage imageWithData: image];

Это работает, но, кажется, работает очень медленно. Иногда приложение просто зависает при попытке загрузить картинки. Есть ли более оптимальный способ загрузки изображений в таблицу? Если я игнорирую изображения, таблица быстро заполняется текстовыми данными.

1 Ответ

1 голос
/ 13 января 2012
UIImage *image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://www.example.com/image.png"]]];

В приведенной выше строке кода NSURL URLWithString: используется с URL-адресом файловой системы, таким как уже загруженное изображение в вашем временном каталоге или в файле plist и т. Д. Так как вы передали URL-адрес http, синхронная блокировка запросов выполняетсяВаш поток, пока он не заканчивает загрузку данных изображения.И если вы делаете это в основном потоке, то пользовательский интерфейс не реагирует на прикосновения до тех пор, пока изображение не будет загружено.

Измените его на асинхронный вызов, т. Е. Загрузите example.com/image.png асинхронно.Вы можете обратиться к ASIHTTPRequest метод экземпляра startAsynchronous и затем передать загруженные данные в UIImage imageWithData:

Чтобы узнать больше об асинхронных сетевых запросах, посмотрите сеанс 208 WWDC 2010 Network Apps для iPhone OS Часть 2

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