@StateObject создаёт и владеет ObservableObject на lifetime view; @ObservedObject только наблюдает объект, переданный извне (владелец снаружи).
Разбор
- Ошибка:
@ObservedObject var vm = VM() — VM может пересоздаться.
- Родитель держит
@StateObject, детям передаёт @ObservedObject.
- В iOS 17+ часто предпочитают
@Observable макрос.
- Смена identity view сбрасывает StateObject.
Итог
StateObject = владение; ObservedObject = наблюдение внешнего объекта.