SwiftUI 状态观察
iOS 17+ @Observable 取代部分 ObservableObject:
swift
@Observable
final class BookStore {
var books: [Book] = []
func refresh() async { books = await api.fetch() }
}View 对属性的读取被跟踪,细粒度刷新,减轻无效 body 重算。
迁移时留意与 EnvironmentObject 混用期的边界;UIKit 桥接仍可用 UIHostingController。