iOS предоставляет несколько API для восстановления состояния, и выбор правильного зависит от объёма и сложности сохраняемого состояния.
UIStateRestoring — используется в UIKit для кодирования и декодирования состояния контроллера представления; каждый контроллер сохраняет и восстанавливает свои собственные данныеNSUserActivity — поддерживает как Handoff, так и восстановление состояния на уровне системы; захватывает текущий контекст пользователя как структурированный объект активности@SceneStorage — property wrapper SwiftUI, который автоматически сохраняет лёгкое состояние для каждой сцены между запусками приложения, например выбранные табы или ввод в текстовое поле@SceneStorage("selectedTab") var selectedTab: String = "home"
Главный принцип — сохранять минимальное состояние, необходимое для восстановления осмысленного UI. Типичные кандидаты:
Избегай сохранения избыточных или производных данных — всё, что можно пересчитать из постоянного хранилища (например CoreData или удалённого API), не нужно включать в состояние восстановления.
@SceneStorage для лёгкого состояния в SwiftUI; используй NSUserActivity, когда важна непрерывность между устройствамиОбщая цель — плавный опыт, когда приложение возобновляет работу именно там, где его оставил пользователь, без лишней сложности в логике восстановления.
@SceneStorage разработан для сохранения сложного состояния приложения между несколькими запусками и автоматической синхронизации этого состояния во всех сценах в многооконной среде.
Новый — ещё не проверен сообществом
Вы