> Что такое кэш и как он работает (iOS, Swift)
Уровень: junior · Роль: mobile · Категория: Технические вопросы
Компании: Wildberries, VK
Стек: iOS, Swift
> Пример ответа
Кэш - это временное хранилище данных, предназначенное для ускорения доступа к часто используемой информации. В контексте iOS-разработки кэш позволяет избежать повторных дорогостоящих операций, таких как загрузка изображений из сети, парсинг JSON или вычисления.
Как работает кэш в iOS (Swift):
-
Принцип локальности - данные, к которым обратились недавно, с высокой вероятностью понадобятся снова. Кэш хранит их в быстром доступе (например, в оперативной памяти или на диске).
-
Уровни кэша:
- In-memory cache (NSCache, URLCache.shared) - хранит объекты в RAM. Быстрый, но ограниченный по объёму и очищается при нехватке памяти.
- Disk cache (FileManager, CoreData, Realm) - сохраняет данные на устройстве. Медленнее памяти, но сохраняется между запусками приложения.
-
Механизм работы на примере NSCache:
SWIFTlet cache = NSCache<NSString, UIImage>()cache.countLimit = 100 // максимум объектовcache.totalCostLimit = 50 * 1024 * 1024 // 50 MB// Записьcache.setObject(image, forKey: "avatar_\(userID)", cost: image.sizeInBytes)// Чтениеif let cachedImage = cache.object(forKey: "avatar_\(userID)") {// используем кэшированное изображение} else {// загружаем из сети и сохраняем в кэш} -
Политики вытеснения - когда кэш переполняется, удаляются наименее используемые элементы (LRU - Least Recently Used) или с наименьшим приоритетом.
-
Пример из UIKit:
URLCacheавтоматически кэширует HTTP-ответы согласно заголовкамCache-Control. В iOS это часто используется для кэширования API-ответов.
Важно: Кэш не гарантирует актуальности данных. Для критичных данных (например, баланс счёта) используйте прямое обращение к серверу. Для некритичных (аватарки, превью) - кэш обязателен для производительности.
> Похожие задачи по mobile
Что такое ViewModel во Vue и как он работает
В каком порядке срабатывают события при нажатии на кнопку и почему
Какие механизмы синхронизации существуют для решения проблем многопоточности
Какие средства синхронизации потоков существуют: mutex, semaphore, NSLock
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью