SuperAPI AI 工具集

ios-development

编程与开发

查看项目

更新于 10-16 10:39

技能介绍

用途

该技能用于指导构建 Apple 平台原生应用,覆盖 iOS、iPadOS、tvOS,并延伸至 watchOS 与 visionOS。适用于开发 Apple 平台应用、实现 iOS 特定功能,或遵循 Apple Human Interface Guidelines 的场景。

平台支持

资料给出的最低目标与当前版本对照:

平台 最低目标 当前
iOS iOS 15.0+ iOS 17+
iPadOS iPadOS 15.0+ iPadOS 17+
tvOS tvOS 15.0+ tvOS 17+
watchOS watchOS 8.0+ watchOS 10+

新项目建议最低目标设为 iOS 17+,以便使用 @Observable(17)、SwiftData(17)、NavigationStack(16)、Swift Charts(16)、MeshGradient(18)、ControlWidget(18)等能力。

主要能力

SwiftUI(新项目首选)

  • 基本结构:使用 @main 的 App 与 WindowGroup,视图通过 @State 管理局部状态,使用 .buttonStyle(.borderedProminent) 等修饰符。
  • 状态管理:@State、@Binding、@StateObject、@ObservedObject、@Environment、@EnvironmentObject、@AppStorage(UserDefaults)。
  • 现代并发:async/await、在视图中用 .task 调用异步方法、使用 @MainActor 类配合 @Published 更新 UI。
  • 导航(iOS 16+):NavigationStack 结合 NavigationPath 与 navigationDestination(for:) 实现类型安全导航。
  • 列表与网格:List 配合 ForEach、.onDelete、.onMove、.listStyle(.insetGrouped)、.searchable、.refreshable;LazyVGrid 配合 GridItem(.adaptive(minimum: 150))。

UIKit(遗留/复杂 UI)

  • 视图控制器生命周期:viewDidLoad、viewWillAppear、viewDidAppear。
  • Auto Layout:通过 NSLayoutConstraint.activate 编写约束,使用 safeAreaLayoutGuide。

数据持久化

  • Core Data:NSManagedObject 模型与 @FetchRequest 排序查询。
  • SwiftData(iOS 17+):使用 @Model 定义模型,视图中用 @Query 查询,通过 @Environment(\.modelContext) 插入数据。
  • Keychain:使用 Security 框架的 SecItemDelete 与 SecItemAdd 存储敏感数据。

网络

使用 URLSession 的 async/await 请求,通过 HTTPURLResponse 校验状态码(200...299),并用 JSONDecoder 解码;示例以 actor NetworkService 封装。

人机界面指南

iOS 设计原则:Clarity(文本清晰、图标精确、装饰克制)、Deference(内容优先、UI 不喧宾夺主)、Depth(视觉层次与真实动效传达层级)。关键尺寸:触摸目标最小 44x44 pt、导航栏 44 pt、标签栏 49 pt、状态栏 47 pt(刘海屏)/ 20 pt(旧版)。安全区域使用 .safeAreaInset、.ignoresSafeArea。

平台特定

iPadOS:NavigationSplitView 分栏、.keyboardShortcut 快捷键、.hoverEffect 悬停效果。tvOS:使用 @FocusState 与 .focused、.focusable() 管理焦点,适配 10 英尺界面的大号字体(如 .font(.system(size: 38)))。

App Store 要求

必需资源包括 App 图标(1024x1024)、各设备尺寸截图、隐私政策 URL、App 描述(最多 4000 字符)。隐私需在 Info.plist 中声明 NSCameraUsageDescription、NSPhotoLibraryUsageDescription 等;App Transport Security 通过 NSAppTransportSecurity 配置。

测试

单元测试使用 XCTest(@testable import、XCTAssertEqual,支持 async 测试);UI 测试使用 XCUIApplication,在 setUp 中设置 continueAfterFailure = false 并启动应用,通过 app.buttons、app.staticTexts 断言。

使用方式

技能以代码示例形式给出可直接参考的模式,包括项目结构建议:App/(入口)、Features/(按功能划分视图与 ViewModel)、Core/(Models、Services、Extensions)、Resources/(Assets.xcassets、Localizable.strings)、Tests/。

最佳实践(DO):新项目用 SwiftUI、支持 Dynamic Type 无障碍、处理所有设备方向、实现完善错误处理、充分利用 Swift 类型系统。避免(DON'T):无校验地强制解包可选值、主线程阻塞网络调用、硬编码字符串(应本地化)、忽略内存管理(循环引用)、跳过无障碍标签。

进阶内容

@Observable 宏(iOS 17+,替代 ObservableObject)

使用 @Observable 标注类,属性用普通 var 即可,视图中用 @State 持有实例,无需 @StateObject/@ObservedObject;双向绑定使用 @Bindable。迁移对照:class: ObservableObject → @Observable class;@Published var → var(自动);@StateObject → @State;@ObservedObject → 直接引用;@EnvironmentObject → @Environment(TypeName.self)。

SwiftUI 6 新视图与修饰符

包括 MeshGradient(iOS 18+)、缩放导航过渡 matchedTransitionSource、ScrollView 增强(scrollPosition、defaultScrollAnchor)、自定义容器与 @Entry 宏。

Swift 6 并发

严格并发检查(SWIFT_STRICT_CONCURRENCY = complete);跨隔离边界的数据需 Sendable;actor 隔离;全局 actor(如 @MainActor);类型化 throws(throws(DataError))。

visionOS 与空间计算

使用 WindowGroup 创建 2D 窗口、ImmersiveSpace 创建沉浸空间、.windowStyle(.volumetric) 创建 3D 体积窗口;集成 RealityKit 的 RealityView、MeshResource、ModelEntity 与空间点击手势。

watchOS 开发

SwiftUI 构建 watchOS App,Widget 与 StaticConfiguration 创建复杂功能/小组件(支持 .accessoryCircular、.accessoryRectangular、.accessoryInline),使用 WatchConnectivity 的 WCSessionDelegate 实现 iPhone 与 Watch 通信。

适用场景与限制

适用场景:开发 iOS/iPadOS/tvOS 原生应用、实现 iOS 特定功能、遵循 Apple 人机界面指南、进行 Apple 平台数据持久化与网络开发、编写 Apple 平台测试。

限制:资料未提供该技能的安装命令、收费模式、价格、平台依赖或效果说明,上述信息暂未提供。