Ответ
Выбор зависит от объема, типа данных и времени жизни.
1. UserDefaults Для небольших простых значений (настройки, флаги).
UserDefaults.standard.set("tempValue", forKey: "myTempKey")
2. NSCache Для объектов, которые можно удалить при нехватке памяти (автоматически очищается системой).
let cache = NSCache<NSString, UIImage>()
cache.setObject(image, forKey: "tempImage")
3. Временная директория файловой системы Для больших данных (файлы, изображения). Система может очистить эту директорию.
let tempURL = FileManager.default.temporaryDirectory
.appendingPathComponent("tempFile.txt")
4. Оперативная память (RAM) Через свойства класса, синглтоны или статические переменные. Данные живут только во время работы приложения.
Важно:
- Для конфиденциальных временных данных используйте Keychain.
- Всегда явно очищайте временные данные, когда они больше не нужны.
Ответ 18+ 🔞
Да ты посмотри, какие варианты нарисовались для временного хранения! Прямо как в столовке — выбор блюд, только вместо котлет и компота у нас данные. Ну, поехали разбирать этот салат, блядь.
1. UserDefaults — для мелочёвки Это твой ящик для всякой хуйни в прихожей. Закинул ключи, мелочь из карманов, забыл. Идеально для настроек, флажков и прочей ерунды, которая должна пережить перезапуск приложения, но по сути — мусор.
UserDefaults.standard.set("tempValue", forKey: "myTempKey")
Только не вздумай туда гигабайтные картинки пихать, а то приложение твоё взвоет, как сука, и выплюнет всё к чертям.
2. NSCache — умный мусорный бак Вот это уже интереснее, ёпта! Кэш, который сам понимает, когда память кончается, и начинает выкидывать старые данные, чтобы новые влезли. Как твоя бабушка перед приходом гостей — всё, что не влезает в шкаф, летит на балкон или в помойку.
let cache = NSCache<NSString, UIImage>()
cache.setObject(image, forKey: "tempImage")
Поставил картинку, поработал с ней, система сама её прибьёт, когда захочет. Удобно, но надеяться на неё — всё равно что доверять кошку стеречь сметану.
3. Временная папка (temporaryDirectory) — сарай для барахла Нужно что-то пожирнее и надёжнее, чем в оперативке, но чтобы система могла это подчистить, когда место нужно? Вот тебе сарай, блядь, на краю файловой системы.
let tempURL = FileManager.default.temporaryDirectory
.appendingPathComponent("tempFile.txt")
Скинул туда файлик, поработал. Система его может сама стереть, но обычно живёт, пока приложение живо. Главное — сам не забудь за собой убрать, а то засрешь всё, как последний свин.
4. Оперативка (RAM) — прямо в руки и держи Самый быстрый способ, ядрёна вошь! Засунул данные в свойство класса, в синглтон или статическую переменную — и они живут ровно столько, сколько живёт твой объект или пока приложение не схлопнется. Выключил приложение — всё, пиздец, данные испарились, как твоя зарплата в пятницу вечером. Никакой персистентности, только хардкор.
Важный пиздец на посошок:
- Если твои «временные» данные — это пароли или номера карт, то ты, блядь, совсем охренел? Для этого есть Keychain, кретин! Туда и пиши.
- И главное правило, которое все забывают: чисти за собой, сука! Не надейся на систему. Закончил работать с временным файлом — удали его. Кэш больше не нужен — очисти. А то потом удивляешься, откуда гигабайты мусора на телефоне у пользователя берутся. Сам же и получишь по ебалу от ревьюеров в App Store.