E
EasySwift iOS🍏
@swift_ioss2.9K подп.
740просмотров
25.5%от подписчиков
11 марта 2026 г.
Score: 814
NSCache in Swift: Practical Guide ℹ️ NSCache — потокобезопасный кэш, который сам чистится под memory pressure. Статья разбирает типичные ошибки и лучшие подходы: от image caching до generic wrapper. Какие могу быть проблемы без использования враперов: ➡️ Keys/values только NSObject (NSString, не String) ➡️ Нет TTL (time‑to‑live) ➡️ Не generic let cache = NSCache<NSString, UIImage>() cache.setObject(image, forKey: url as NSString) Автор берёт классический подход от Sundell и делает generic wrapper: final class Cache<Key: Hashable, Value> { private let wrapped = NSCache<WrappedKey, Entry>() func setObject(_ object: Value, forKey key: Key) { ... } func object(forKey key: Key) -> Value? { ... } } ❗️ Главное — правильные лимиты: cache.totalCostLimit = 50 1024 1024 // 50MB для картинок cache.countLimit = 100 // не больше 100 items cache.setObject(img, forKey: key, cost: img.size.width * img.size.height) 🔴 Реальный кейс: tableView с аватарками. Супер фича — из кэша мгновенно, если нет — качаем и пихаем с cost. Когда мало памяти iOS сама вызывает removeAllObjects(). Никаких retain cycles, никаких GCD очередей. Когда это спасает: ✔️ Image lists (table/collection views) ✔️ ответы API (User, Post models) ✔️ тяжелый вычисления (image filters, ML predictions) Не путайте с: ❌ Disk cache → URLCache ❌ User data → CoreData
740
просмотров
1369
символов
Нет
эмодзи
Нет
медиа

Другие посты @swift_ioss

Все посты канала →
NSCache in Swift: Practical Guide ℹ️ NSCache — потокобезопас — @swift_ioss | PostSniper