@Observable マクロとは?
@Observable は Swift の Observation フレームワークで提供されるマクロで、
クラスや構造体を「監視可能(Observable)」にするための仕組みです。
これを付けることで、その型は Observable プロトコルに自動で準拠し、
プロパティの変更を SwiftUI などの UI に通知できるようになります。
とのことです。
どの場面で使うか?
従来の ObservableObject + @Published を置き換えることができます。
class Car: ObservableObject {
@Published var name: String = ""
@Published var needsRepairs: Bool = false
init(name: String, needsRepairs: Bool = false) {
self.name = name
self.needsRepairs = needsRepairs
}
}
// ビュー側で
@StateObject private var car = Car(name: "プリウス2")
@Observableで書くと
@Observable
class Car {
var name: String = ""
var needsRepairs: Bool = false
init(name: String, needsRepairs: Bool = false) {
self.name = name
self.needsRepairs = needsRepairs
}
}
// ビュー側で
@State private var car = Car(name: "プリウス")
・プロパティの@Published 不要
・自動的に 値を監視
・値が変更されると、Viewを更新
簡単に書けるようになります。
宣言したプロパティ全てが自動で監視対象となるため、使うときに注意
備考
iOS17以降で使用可能です。


コメント