> Что такое кэш и как он работает (iOS, Swift)

Уровень: junior · Роль: mobile · Категория: Технические вопросы

Компании: Wildberries, VK

Стек: iOS, Swift

> Пример ответа

Кэш - это временное хранилище данных, предназначенное для ускорения доступа к часто используемой информации. В контексте iOS-разработки кэш позволяет избежать повторных дорогостоящих операций, таких как загрузка изображений из сети, парсинг JSON или вычисления.

Как работает кэш в iOS (Swift):

  1. Принцип локальности - данные, к которым обратились недавно, с высокой вероятностью понадобятся снова. Кэш хранит их в быстром доступе (например, в оперативной памяти или на диске).

  2. Уровни кэша:

    • In-memory cache (NSCache, URLCache.shared) - хранит объекты в RAM. Быстрый, но ограниченный по объёму и очищается при нехватке памяти.
    • Disk cache (FileManager, CoreData, Realm) - сохраняет данные на устройстве. Медленнее памяти, но сохраняется между запусками приложения.
  3. Механизм работы на примере NSCache:

    SWIFT
    let 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 {
    // загружаем из сети и сохраняем в кэш
    }
  4. Политики вытеснения - когда кэш переполняется, удаляются наименее используемые элементы (LRU - Least Recently Used) или с наименьшим приоритетом.

  5. Пример из UIKit: URLCache автоматически кэширует HTTP-ответы согласно заголовкам Cache-Control. В iOS это часто используется для кэширования API-ответов.

Важно: Кэш не гарантирует актуальности данных. Для критичных данных (например, баланс счёта) используйте прямое обращение к серверу. Для некритичных (аватарки, превью) - кэш обязателен для производительности.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью