2008-10-28 3 views
0

Я разрабатываю приложение для iPhone. В этом приложении у меня один TableViewController, и TableViewController, состоящий из пользовательской ячейки таблицы.
В эту ячейку я загружаю изображение с URL-адреса, но scrolling не так гладен, (потому что каждый элемент загружает изображения каждый раз при прокрутке).Как я могу сохранить изображение, полученное из Интернета, в пакет приложений?

Итак, я решил сохранить эти изображения в папке документа приложения, но я не знаю, как использовать папку документов в iPhone, когда приложение находится в рабочем состоянии.

Любое предложение?

и на других форумах, я нашел, что SQLITE имеет блоб тип данных для хранения двоичных данных,

Какой метод является эффективным, папка или документ SQLite для хранения изображения?

ответ

2

Сохранение изображений на устройстве может улучшить вещи немного, но это не будет делать прокрутку действительно гладкой. Причина, по которой прокрутка имеет тенденцию становиться изменчивой, заключается в том, что синхронная функция в вашем коде ячейки означает, что вы блокируете цикл выполнения, что предотвращает анимацию. Если вы хотите ускорить прокрутку, вам нужно избавиться от события блокировки, сделав его асинхронным (хотя это все равно может привести к резкой прокрутке, если вы выполняете асинхронные обратные вызовы, занимая много процессорного времени) или сбрасывая блокирующий код основной поток.

Если вы перемещаете свои грузы с основного потока, то отдельные файлы или база данных sqlite3 будут работать нормально. Другая большая проблема, которую вы обнаружите, заключается в том, что ячейки не обновляются при прокрутке. Это означает, что если вы выполняете загрузку асинхронного изображения в ответ на загрузку ячейки, изображение не будет отображаться в ячейке до тех пор, пока пользователь не выполнит прокрутку, что обычно не является желаемым опытом. Чтобы избежать того, что вам необходимо предварительно загрузить изображения в плунжер, прежде чем пользователь прокрутит их.

0

Вы можете использовать NSFileManagercreateFileAtPath, чтобы сохранить NSData в файл.

Чтобы получить каталог Документы, используйте этот:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
Смежные вопросы