SuperAPI AI 工具集

axiom-ios-concurrency

编程与开发

查看项目

更新于 10-15 09:09

技能介绍

用途

axiom-ios-concurrency 是一个 iOS 并发路由技能。当你在编写任何涉及 async、actors、线程的代码,或遇到任何并发错误时,应使用该技能。它本身不直接给出全部实现细节,而是根据问题类型把任务路由到 axiom 集合中对应的专项技能。

何时使用

  • 编写 async/await 代码
  • 遇到并发错误(数据竞争、actor 隔离)
  • 使用 @MainActor
  • 处理 Sendable 一致性
  • 优化 Swift 性能
  • 迁移到 Swift 6 并发
  • 应用在加载时卡死(很可能是主线程阻塞)

冲突解决规则

  • ios-concurrency 与 ios-performance:应用卡死或变慢时,先尝试 ios-concurrency,因为主线程阻塞是 UI 卡死的首要原因,应先检查 @MainActor 上的同步工作,再考虑性能剖析。只有在并发修复无效时才使用 ios-performance。
  • ios-concurrency 与 ios-build:遇到 Swift 6 并发错误时使用 ios-concurrency,而不是 ios-build,因为并发错误是代码问题而非环境问题。ios-build 用于“No such module”、模拟器问题等与 Swift 语言错误无关的构建失败。
  • ios-concurrency 与 ios-data:当并发错误涉及 Core Data 或 SwiftData 时,Core Data 线程(NSManagedObjectContext 线程约束、performBackgroundTask)应先用 ios-data,因为 Core Data 有自己的线程模型;SwiftData + @MainActor ModelContext 则用 ios-concurrency;一般性的“后台保存丢数据”先用 ios-data。

路由逻辑

  • Swift 6 并发模式、async/await 模式、@MainActor 用法、Actor 隔离、Sendable 一致性、数据竞争预防、Swift 6 迁移 → /skill axiom-swift-concurrency
  • Swift 并发 API 参考(Actor 定义、重入、全局 actor、Sendable 模式、@unchecked Sendable、Task/TaskGroup/取消 API、AsyncStream、continuation、DispatchQueue 迁移到 actor)→ /skill axiom-swift-concurrency-ref
  • Swift 性能(值类型与引用类型、写时复制优化、ARC 开销、泛型特化、集合性能)→ /skill axiom-swift-performance
  • 同步访问 actor(MainActor.assumeIsolated、@preconcurrency 协议一致性、旧式委托回调、同步测试 MainActor 代码)→ /skill axiom-assume-isolated
  • 线程安全原语(Mutex(iOS 18+)、OSAllocatedUnfairLock(iOS 16+)、原子类型、锁与 actor 的取舍)→ /skill axiom-synchronization
  • 参数所有权(borrowing/consuming 修饰符、不可复制类型 ~Copyable、减少 ARC 流量、consume 操作符)→ /skill axiom-ownership-conventions
  • 并发剖析(Swift Concurrency Instruments 模板、actor 争用诊断、线程池耗尽、任务可视化)→ /skill axiom-concurrency-profiling
  • Combine 响应式模式(Publisher/Subscriber 生命周期、AnyCancellable、Combine 与 async/await 取舍、@Published + ObservableObject、操作符模式、桥接)→ /skill axiom-combine-patterns

自动化扫描

并发审计:启动 concurrency-auditor 代理或 /axiom:audit concurrency(五阶段语义审计:映射隔离架构、检测 8 种反模式、推理缺失的并发模式、关联复合风险、评估 Swift 6.3 就绪度)。

决策树

  • 数据竞争 / actor 隔离 / @MainActor / Sendable?→ swift-concurrency
    • 需要具体 API 语法(actor 定义、TaskGroup、AsyncStream、continuation)?→ swift-concurrency-ref
  • 编写 async/await 代码?→ swift-concurrency
  • Swift 6 迁移?→ swift-concurrency
  • assumeIsolated / @preconcurrency?→ assume-isolated
  • Mutex / 锁 / 同步?→ synchronization
  • borrowing / consuming / ~Copyable?→ ownership-conventions
  • 剖析异步性能 / actor 争用?→ concurrency-profiling
  • 值类型 / ARC / 泛型优化?→ swift-performance
  • 想要自动化并发扫描?→ concurrency-auditor(Agent)
  • Combine / @Published / AnyCancellable / 响应式流?→ combine-patterns

反合理化说明

  • “只要加 @MainActor 就能工作”:@MainActor 有隔离继承规则,swift-concurrency 覆盖所有模式。
  • “我用 nonisolated(unsafe) 消除警告”:消除警告会隐藏数据竞争,swift-concurrency 展示安全模式。
  • “只是一个 async 调用”:即使单个 async 调用也有取消和隔离影响,swift-concurrency 会覆盖。
  • “我懂 actor 怎么工作”:actor 重入和隔离规则在 Swift 6.2 有变化,swift-concurrency 是最新的。
  • “我稍后修复 Sendable 警告”:Sendable 违规会导致运行时崩溃,swift-concurrency 现在就能正确修复。
  • “Combine 已死,直接用 async/await”:Combine 没有弃用通知,重写可用的管道浪费时间并引入 bug,combine-patterns 覆盖增量迁移。

关键模式

  • Swift 6 并发(swift-concurrency):渐进式路径(单线程 → async → 并发 → actors)、@concurrent 属性强制后台执行、隔离一致性、主 actor 模式、11 个可复制粘贴模式。
  • Swift 性能(swift-performance):~Copyable 不可复制类型、写时复制(COW)模式、值类型与引用类型决策、减少 ARC 开销、泛型特化。

示例调用

  • “我在 Swift 6 中遇到‘data race’错误” → /skill axiom-swift-concurrency
  • “如何正确使用 @MainActor?” → /skill axiom-swift-concurrency
  • “我的应用因不必要的复制而变慢” → /skill axiom-swift-performance
  • “这个网络调用该用 async/await 吗?” → /skill axiom-swift-concurrency
  • “如何使用 assumeIsolated?” → /skill axiom-assume-isolated
  • “我的委托回调在主线程运行,如何访问 MainActor 状态?” → /skill axiom-assume-isolated
  • “该用 Mutex 还是 actor?” → /skill axiom-synchronization
  • “os_unfair_lock 和 OSAllocatedUnfairLock 有什么区别?” → /skill axiom-synchronization
  • “borrowing 在 Swift 中做什么?” → /skill axiom-ownership-conventions
  • “如何使用 ~Copyable 类型?” → /skill axiom-ownership-conventions
  • “我的异步代码很慢,如何剖析?” → /skill axiom-concurrency-profiling
  • “我怀疑有 actor 争用,如何诊断?” → /skill axiom-concurrency-profiling
  • “我的 Core Data 保存丢失后台任务数据” → 路由到 ios-data 路由(Core Data 线程是框架特定的)
  • “如何创建 TaskGroup?” → /skill axiom-swift-concurrency-ref
  • “AsyncStream API 是什么?” → /skill axiom-swift-concurrency-ref
  • “如何创建自定义全局 actor?” → /skill axiom-swift-concurrency-ref
  • “如何把完成处理器转换为 async?” → /skill axiom-swift-concurrency-ref
  • “actor 重入规则是什么?” → /skill axiom-swift-concurrency-ref
  • “我的 Combine 管道静默停止产生值” → /skill axiom-combine-patterns
  • “这个数据流该用 Combine 还是 async/await?” → /skill axiom-combine-patterns
  • “如何把 Combine publisher 桥接到 async/await 代码?” → /skill axiom-combine-patterns
  • “AnyCancellable 内存泄漏” → /skill axiom-combine-patterns
  • “检查我的代码是否有 Swift 6 并发问题” → concurrency-auditor 代理

限制

该技能是路由入口,具体实现细节由各专项子技能提供。资料未提供安装命令、收费或价格信息。