UIImage + NSCache против [UIImage imageNamed:] - PullRequest
3 голосов
/ 17 февраля 2012

У меня проблема с производительностью, если я загружаю изображение JPG (и да, я не могу предоставить любой формат файла PNG в приложении) с диска с помощью [UIImage imageWithContentsOfFile: ], сохраняю UIImage в глобальном NSCache и использую Cached Изображение в [UITableViewCell drawRect: ]. Этот подход намного медленнее, чем пользователь [UIImage imagedNamed:].

Если вы проанализировали производительность с помощью инструмента «Time Profile» и, как вы можете видеть на первом рисунке, JPEG всегда декодируется в [DBArtistTableViewCell drawRect:]. На втором рисунке с решением [UIImage imageNamed:] JPG не будет распакован.

NSCache + UIImage Решение: NSCache + UIImage

[UIImage imageNamed] Решение UIImage imageNamed

Короткий вопрос: почему решение UIImage + NSCache медленнее, чем решение [UIImage imageNamed:], и в чем заключается магия с методом [UIImage imageNamed:] (да, я знаю, что такое кэширование, но какова остальная магия)

Спасибо за помощь.

1 Ответ

3 голосов
/ 17 февраля 2012

Я полагаю, что причина в том, что UIImage imageNamed вызывает распаковку данных и их сохранение в кеше, тогда как UIImage imageWithContentsOfFile загружает сжатые данные, но не распаковывает их, пока вам не потребуется их отобразить.

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