mcpField
S
swift-expert

swift-expert

github.com/404kidwiz开发132 次安装
代码仓库

关于 swift-expert

这项开发技能面向构建和维护 Apple 平台原生应用及 Swift 服务端应用的开发者,涵盖 SwiftUI、并发、性能优化、系统框架集成和测试。也提供从 Objective-C 或 UIKit 迁移的指导。

主要功能

  1. 01SwiftUI 应用开发
  2. 02Swift 并发模式
  3. 03性能分析与优化
  4. 04Apple 框架集成
  5. 05使用 XCTest 和 XCUITest 测试

适用场景

  1. 01构建原生 iOS 或 macOS 应用
  2. 02迁移 UIKit 或 Objective-C 代码
  3. 03将回调改为 async/await
  4. 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 应用。

实现:

  1. 采用基于 Combine 的 MVVM 架构
  2. 创建可复用的 ViewComponents,确保一致性
  3. 实现恰当的状态管理
  4. 添加全面的无障碍支持
  5. 构建由预览驱动的开发工作流

结果:

  • 代码量比 UIKit 版本减少 50%
  • 可测试性提升(ViewModels 易于测试)
  • 无障碍体验更佳(支持 VoiceOver)
  • 借助 Xcode Previews 加快开发
示例 2:迁移到 Swift 并发

场景: 将基于回调的代码转换为 async/await。

实现:

  1. 找出所有完成处理器模式
  2. 在需要时使用 @MainActor 创建异步包装器
  3. 为并行操作实现结构化并发
  4. 使用 throw/catch 添加恰当的错误处理
  5. 使用 actors 保护共享状态

结果:

  • 样板代码减少 70%
  • 消除回调地狱和竞态条件
  • 提高代码可读性和可维护性
  • 通过结构化任务改进内存管理
示例 3:性能优化

场景: 优化启动缓慢和滚动卡顿的问题。

实现:

  1. 使用 Instruments 分析应用启动过程
  2. 找出耗时的初始化器并延后执行
  3. 为资源实现延迟加载
  4. 使用恰当的缓存优化图像
  5. 降低视图层级的复杂度

结果:

  • 启动时间从 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)

目标: 无需锁即可管理线程安全的缓存。

步骤:

  1. 定义 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()
        }
    }
    
  2. 用法(异步上下文)

    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