关于 swift-expert
这项开发技能面向构建和维护 Apple 平台原生应用及 Swift 服务端应用的开发者,涵盖 SwiftUI、并发、性能优化、系统框架集成和测试。也提供从 Objective-C 或 UIKit 迁移的指导。
主要功能
- 01SwiftUI 应用开发
- 02Swift 并发模式
- 03性能分析与优化
- 04Apple 框架集成
- 05使用 XCTest 和 XCUITest 测试
适用场景
- 01构建原生 iOS 或 macOS 应用
- 02迁移 UIKit 或 Objective-C 代码
- 03将回调改为 async/await
- 04分析应用启动和滚动性能
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ 404kidwiz/ claude-supercode-skills --skill swift-expert安装后在 Claude Code 中输入/swift-expert确认已加载。
详细介绍
Swift 专家
目的
提供 Apple 生态系统开发方面的专业知识,专注于使用 Swift 6、SwiftUI 和现代并发模式开发原生 iOS/macOS/visionOS 应用。打造高性能原生应用,并与各 Apple 平台深度集成。
适用场景
- 使用 SwiftUI 和 SwiftData 构建原生 iOS/macOS 应用
- 将旧版 Objective-C/UIKit 代码迁移到现代 Swift
- 使用 Actors 和结构化 Tasks 实现高级并发
- 优化性能(Instruments、Memory Graph、启动时间)
- 集成系统框架(HealthKit、HomeKit、WidgetKit)
- 开发 visionOS 应用(空间计算)
- 创建 Swift 服务端应用(Vapor、Hummingbird)
示例
示例 1:现代 SwiftUI 架构
场景: 使用现代 SwiftUI 重写旧版 UIKit 应用。
实现:
- 采用基于 Combine 的 MVVM 架构
- 创建可复用的 ViewComponents,确保一致性
- 实现恰当的状态管理
- 添加全面的无障碍支持
- 构建由预览驱动的开发工作流
结果:
- 代码量比 UIKit 版本减少 50%
- 可测试性提升(ViewModels 易于测试)
- 无障碍体验更佳(支持 VoiceOver)
- 借助 Xcode Previews 加快开发
示例 2:迁移到 Swift 并发
场景: 将基于回调的代码转换为 async/await。
实现:
- 找出所有完成处理器模式
- 在需要时使用 @MainActor 创建异步包装器
- 为并行操作实现结构化并发
- 使用 throw/catch 添加恰当的错误处理
- 使用 actors 保护共享状态
结果:
- 样板代码减少 70%
- 消除回调地狱和竞态条件
- 提高代码可读性和可维护性
- 通过结构化任务改进内存管理
示例 3:性能优化
场景: 优化启动缓慢和滚动卡顿的问题。
实现:
- 使用 Instruments 分析应用启动过程
- 找出耗时的初始化器并延后执行
- 为资源实现延迟加载
- 使用恰当的缓存优化图像
- 降低视图层级的复杂度
结果:
- 启动时间从 4s 缩短至 1.2s
- 滚动始终保持 60fps
- 内存使用量减少 40%
- App Store 评分提升
最佳实践
SwiftUI 开发
- MVVM 架构:清晰划分职责
- 状态管理:恰当使用 @StateObject/@ObservedObject
- 性能:延迟加载,恰当实现 Equatable
- 无障碍:从一开始就纳入设计
Swift 并发
- 结构化并发:使用 Task 和 TaskGroup
- Actors:使用 actors 保护共享状态
- MainActor:恰当处理 UI 更新
- 错误处理:全面采用 throw/catch 模式
性能
- Instruments:定期分析,不要凭猜测
- 延迟加载:推迟执行耗时操作
- 内存管理:留意强引用循环
- 优化图像:选择恰当的格式、缓存和尺寸
平台集成
- 系统框架:使用恰当的 Apple 框架
- 隐私:遵循 App Store 隐私要求
- 扩展:支持小组件、快捷指令等
- VisionOS:考虑空间计算模式
请勿在以下情况下调用:
- 使用 React Native/Flutter 构建跨平台应用 → 使用
mobile-app-developer - 编写简单的 shell 脚本(除非明确要求使用 Swift 编写脚本)→ 使用
bash或python-pro - 设计游戏素材 → 使用
game-developer(但 Metal/SceneKit 属于适用范围)
核心能力
Swift 开发
- 使用 SwiftUI 构建原生 iOS/macOS 应用
- 实现高级 Swift 特性(Actors、async/await、泛型)
- 使用 SwiftData 和 Combine 管理状态
- 使用 Instruments 优化性能
Apple 平台集成
- 集成系统框架(HealthKit、HomeKit、WidgetKit)
- 为 visionOS 和空间计算开发
- 管理应用分发(App Store、TestFlight)
- 实施隐私与安全最佳实践
并发与性能
- 实施 Swift 6 并发模式
- 管理内存并防止保留环
- 使用性能分析工具调试性能问题
- 优化应用启动时间和电池使用情况
测试与质量
- 使用 XCTest 编写单元测试
- 使用 XCUITest 实施 UI 测试
- 管理测试覆盖率和质量指标
- 为 Apple 平台设置 CI/CD
工作流 2:Swift 6 并发(Actor)
目标: 无需锁即可管理线程安全的缓存。
步骤:
-
定义 Actor
actor ImageCache { private var cache: [URL: UIImage] = [:] func image(for url: URL) -> UIImage? { return cache[url] } func store(_ image: UIImage, for url: URL) { cache[url] = image } func clear() { cache.removeAll() } } -
用法(异步上下文)
class ImageLoader { private let cache = ImageCache() func load(url: URL) async throws -> UIImage { if let cached = await cache.image(for: url) { return cached } let (data, _) = try await URLSession.shared.data(from: url) guard let image = UIImage(data: data) else { throw URLError(.badServerResponse) } await cache.store(image, for: url) return image } }
4. 模式与模板
模式 1:依赖注入(环境)
使用场景: 将服务注入 SwiftUI 层级中。
// 1. Define Key
private struct AuthKey: EnvironmentKey {
static let defaultValue: AuthService = AuthService.mock
}
// 2. Extend EnvironmentValues
extension EnvironmentValues {
var authService: AuthService {
get { self[AuthKey.self] }
set { self[AuthKey.self] = newValue }
}
}
// 3. Use
struct LoginView: View {
@Environment(\.authService) var auth
func login() {
Task { await auth.login() }
}
}
模式 2:协调器(导航)
使用场景: 将导航逻辑与视图解耦。
@Observable
class Coordinator {
var path = NavigationPath()
func push(_ destination: Destination) {
path.append(destination)
}
func pop() {
path.removeLast()
}
func popToRoot() {
path.removeLast(path.count)
}
}
enum Destination: Hashable {
case detail(Int)
case settings
}
模式 3:结果构建器(DSL)
使用场景: 创建用于配置 API 请求的自定义 DSL。
@resultBuilder
struct RequestBuilder {
static func buildBlock(_ components: URLQueryItem...) -> [URLQueryItem] {
return components
}
}
func makeRequest(@RequestBuilder _ builder: () -> [URLQueryItem]) {
let items = builder()
// ... construct URL
}
// Usage
makeRequest {
URLQueryItem(name: "limit", value: "10")
URLQueryItem(name: "sort", value: "desc")
}
6. 集成模式
backend-developer:
- 交接: 后端提供 gRPC/REST 规范 → Swift 专家生成 Codable 结构体。
- 协作: 处理分页(游标)和错误信封。
- 工具:
swift-openapi-generator。
ui-designer:
- 交接: 设计师提供 Figma → Swift 专家使用
HStack/VStack进行复刻。 - 协作: 定义设计系统(Color、Typography 扩展)。
- 工具: Xcode 预览。
mobile-app-developer:
- 交接: React Native 团队需要原生模块(例如 Apple Pay)→ Swift 专家编写 Swift-JS 桥接。
- 协作: 将原生 UIView 暴露给 React Native。
评论
支持 Markdown