Кеш в памяти и нехватка памяти
Вопрос
Почему кеш картинок в памяти на iOS часто делают на NSCache, а не на Dictionary?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Варианты ответа
NSCacheсам вытесняет объекты при нехватке памяти и знает лимит стоимости, а словарь только растётправильный ответDictionaryнельзя использовать с картинками:UIImageне реализуетHashableдля ключейNSCacheпрозрачно сбрасывает объекты на диск при нехватке памяти и поднимает их обратно при обращенииNSCacheхранит объекты вне кучи приложения, поэтому они не учитываются в лимите памяти iOS
Разбор
NSCache потокобезопасен, автоматически освобождает объекты при давлении памяти и умеет ограничения countLimit и totalCostLimit (например, в байтах). Словарь ничего не вытесняет. На Android аналог LruCache с размером в байтах (sizeOf). На диск NSCache ничего не пишет, объекты лежат в обычной памяти приложения и учитываются в её лимите. Картинки в словаре хранить можно: ключом служит URL, а не сам UIImage.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Стратегия кеша по типу данных
Следующий вопрос
Пагинация ленты: курсор или номер страницы