Как это было продемонстрировано на iPhone Developer Tech Talk, чтобы использовать NSOperation
и NSOperationQueue
.
Идея заключается в том, чтобы обернуть запрос загрузки изображения (используя NSURLRequest) в NSOperation.
Вы можете установить ячейку в качестве получателя обратного вызова, отправленного вашей операцией, когда она будет завершена, чтобы вы могли прикрепить изображение к ячейке (нарисуйте ее вручную или добавьте ее в изображение).
В основном, в вашем методе cellForRowAtIndexPath
, сообщите ячейке, чтобы начать загрузку изображения, и создать ячейку NSOperation и добавить ее в операционную очередь, управляемую вашим контроллером табличного представления или чем-то еще.
Очередь начинает выполнение операций и обращается к каждой соте, когда они будут выполнены.
Если вы хотите, вы можете отменить операцию, если ячейка перемещается за кадром, поэтому вы не тратите ресурсы на загрузку изображения, которое будет выброшено, потому что ячейка не будет отображаться для отображения изображения.
Моя проблема заключается в том, как я обнаруживаю ячейки, которые отображаются? – ncohen
Ячейка отображается после вызова метода tableView: cellForRowAtIndexPath: ', поскольку это метод, который предоставляет представление таблицы для отображения ячейки. В подклассе вашей ячейки есть метод, который создает NSOperation, который инкапсулирует загрузку изображения и добавляет его в NSOperationQueue, управляемый вашим контроллером табличного представления или где-то еще в вашем приложении. – Jasarien
, когда я говорю дисплей, я имею в виду видимый на экране ... Если вы посмотрите на appstore, то только когда прокрутка просмотрела прокрутку, что изображения загружены! Как я могу определить отображаемые ячейки? – ncohen