用途:扫描 iOS 代码库中的旧式模式,输出迁移到 iOS 17/18+ 现代写法的路径与代码示例。
主要能力:检测并迁移 ObservableObject → @Observable(移除 @Published,非观察属性用 @ObservationIgnored);@StateObject → @State;@ObservedObject → 普通属性或 @Bindable;@EnvironmentObject → @Environment(Type.self),设置处 .environmentObject() → .environment();弃用的 onChange(of:perform:) → onChange(of:initial:_:);completion handler → async/await;withAnimation 闭包 → 动画参数;以及 Swift 语言层面的现代化替换。
使用方式:按提示中的 Glob、Grep、Read 步骤扫描 **/*.swift,跳过测试、预览、Pods、Carthage、.build、DerivedData 等目录;按优先级(HIGH/MEDIUM/LOW)分类,输出受影响文件、行号、迁移前后代码与迁移顺序,并提示最低部署目标影响。
适用场景:需要把已有 iOS 项目升级到 iOS 17+ 观察机制与并发写法时。
限制:完整迁移要求 iOS 17+;需支持 iOS 16 及更早时保留 ObservableObject 或用条件编译。不要迁移框架自有类型,例如 GroupSession(SharePlay/GroupActivities),其 @Published 的 willSet 时序被参与者增量逻辑依赖,改写会导致后加入者静默收不到状态;AppIntent、EntityQuery、AppEntity、WidgetConfiguration、TimelineProvider 等协议类型也不应标记迁移。第三方 SDK 类型、有意支持旧系统的模型、Combine 发布者均属误报。迁移后需构建、测试视图更新、绑定与环境注入。