Основное отличие состоит в том, что @State
для структур, а @ObservedObject
для классов. И @State
, и @ObservedObject
достигают схожей вещи, обновляя вас, когда что-то меняется.
A struct
изменяется, когда какое-то свойство изменено, что означает, что оно воссоздается, поэтому @State
обновляется. A class
обновляет @ObservedObject
при изменении свойства - используя @Published
для прослушивания изменений. Когда обновляется либо @State
, либо @ObservedObject
, тело представления переделывается.
Здесь вы действительно задаете вопрос , когда использовать struct против класса , если любой из них будет работать в некоторых ситуациях.
В вашем случае, поскольку TaskList
является только базовой c структурой данных и не требует большого количества свойств, которые вы хотите предотвратить, чтобы обновить представление (используя / не используя @Published
), вам, вероятно, следует использовать struct
с @State
вместо.