Проект SDWebImage обеспечивает аналогичную категорию UIImageView, но предлагает как кэширование как в памяти (с использованием NSCache), так и на диске (используя NSFileManager). Я бы рекомендовал использовать это, когда вам нужно кэшировать на диск.
Недостатком этой реализации является то, что ваши сетевые запросы не будут проходить через ваш подкласс AFHTTPClient
, поэтому в зависимости от ваших потребностей вам может понадобиться реализовать свою собственную очередь операций, аутентификацию и т. Д. Если вы просто используете это для чего-то основного, например, для отображения изображений аватаров в виде таблицы, должно быть хорошо.
Если этот недостаток беспокоит вас, альтернативная идея заключалась бы в использовании SDImageCache
(включенного в проект SDWebImage
) для кэширования изображений и загрузки их самостоятельно с использованием AFNetworking.
Наконец, обратите внимание, что AFNetworking имеет встроенную поддержку для NSURLCache
, а если вы ее создадите, она будет кэшировать ваши изображения на диск. Однако кэширование изображений обычно используется для отображения большого количества изображений в UIScrollView
, а NSURLCache
не имеет достаточной производительности для плавной прокрутки.
Спасибо за это, я обязательно поближе рассмотрю SDWebImage. Из любопытства, почему NSURLCache имеет субоптимальную производительность? Я был под впечатлением, что он использовал как кеширование памяти, так и кеширование типа L1 и L2, где сам веб-запрос был бы L3, что теоретически было бы довольно быстрым. – jpredham
Это хорошее объяснение: https://github.com/rs/SDWebImage/wiki/How-is-SDWebImage-better-than-X%3F – jpredham