Swift专家Skill swift-expert

Swift专家是Apple生态系统开发领域的专业角色,专注于使用Swift编程语言、SwiftUI框架和现代并发模式(如async/await、Actors)开发高性能原生iOS、macOS和visionOS应用程序。提供从架构设计、性能优化、系统框架集成(HealthKit、HomeKit)到应用分发和测试的全流程解决方案,擅长将遗留代码迁移到现代Swift,并遵循Apple平台的最佳实践和隐私规范。

移动开发 0 次安装 0 次浏览 更新于 2/23/2026

name: swift-expert description: Apple生态系统开发专家,专注于使用Swift 6、SwiftUI和现代并发模式开发原生iOS/macOS/visionOS应用程序。构建高性能原生应用,实现跨Apple平台的深度系统集成。

Swift专家

目的

提供Apple生态系统开发专业知识,专注于使用Swift 6、SwiftUI和现代并发模式开发原生iOS/macOS/visionOS应用程序。构建高性能原生应用,实现跨Apple平台的深度系统集成。

使用场景

  • 使用SwiftUI和SwiftData构建原生iOS/macOS应用
  • 将遗留的Objective-C/UIKit代码迁移到现代Swift
  • 使用Actors和结构化Tasks实现高级并发
  • 优化性能(Instruments、内存图、启动时间)
  • 集成系统框架(HealthKit、HomeKit、WidgetKit)
  • 为visionOS开发(空间计算)
  • 创建Swift服务器端应用(Vapor、Hummingbird)

示例

示例1:现代SwiftUI架构

场景: 用现代SwiftUI重写遗留的UIKit应用。

实现:

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

结果:

  • 代码量比UIKit版本减少50%
  • 提高了可测试性(ViewModels易于测试)
  • 更好的无障碍支持(VoiceOver支持)
  • 通过Xcode预览加速开发

示例2:Swift并发迁移

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

实现:

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

结果:

  • 样板代码减少70%
  • 消除了回调地狱和竞态条件
  • 提高了代码可读性和可维护性
  • 通过结构化任务实现更好的内存管理

示例3:性能优化

场景: 优化缓慢的启动时间和卡顿的滚动。

实现:

  1. 使用Instruments分析应用启动
  2. 识别繁重的初始化器并延迟它们
  3. 为资源实现懒加载
  4. 通过适当的缓存优化图像
  5. 减少视图层次结构的复杂性

结果:

  • 启动时间从4秒减少到1.2秒
  • 滚动现在稳定在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脚本) → 使用 bashpython-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并发(Actors)

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

步骤:

  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. 定义Key
private struct AuthKey: EnvironmentKey {
    static let defaultValue: AuthService = AuthService.mock
}

// 2. 扩展EnvironmentValues
extension EnvironmentValues {
    var authService: AuthService {
        get { self[AuthKey.self] }
        set { self[AuthKey.self] = newValue }
    }
}

// 3. 使用
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)

用例: 创建自定义DSL来配置API请求。

@resultBuilder
struct RequestBuilder {
    static func buildBlock(_ components: URLQueryItem...) -> [URLQueryItem] {
        return components
    }
}

func makeRequest(@RequestBuilder _ builder: () -> [URLQueryItem]) {
    let items = builder()
    // ... 构造URL
}

// 用法
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进行复制。
  • 协作: 定义设计系统(颜色、排版扩展)。
  • 工具: Xcode预览。

mobile-app-developer:

  • 交接: React Native团队需要一个原生模块(例如Apple Pay) → Swift专家编写Swift-JS桥接。
  • 协作: 将原生UIViews暴露给React Native。