SuperAPI AI 工具集

uikit-max

编程与开发

查看项目

更新于 10-15 15:26

技能介绍

uikit-max 是一个面向 UIKit 的代码审查技能,用于检查 Swift 与 UIKit 代码的正确性、现代 API 使用情况以及对项目约定的遵循程度。其定位是只报告真实存在的问题,不进行无意义的挑剔,也不臆造问题。

用途 该技能适用于阅读、编写或审查基于 UIKit 的 iOS 代码。它作为 UIKit 开发者的辅助审查工具,帮助发现废弃 API、架构与性能方面的问题。

主要能力 审查流程覆盖多个维度,每个维度对应一个参考文件:

  • 使用 references/api.md 检查废弃 API。
  • 使用 references/views.md 检查视图、子类化与组合模式是否符合最佳实践。
  • 使用 references/layout.md 验证 Auto Layout 用法与约束模式。
  • 使用 references/controllers.md 确保视图控制器生命周期与架构正确。
  • 使用 references/navigation.md 确保导航模式现代且可维护。
  • 使用 references/tableview-collectionview.md 验证 UITableView 与 UICollectionView 的用法。
  • 使用 references/design.md 确保代码采用符合 Apple 人机界面指南的无障碍设计。
  • 使用 references/accessibility.md 验证无障碍合规性,包括 Dynamic Type、VoiceOver 与 traits。
  • 使用 references/performance.md 确保代码高效运行。
  • 使用 references/concurrency.md 检查并发与线程安全。
  • 使用 references/swift.md 对 Swift 代码进行快速验证。
  • 使用 references/hygiene.md 进行最终的代码卫生检查。 如果只做部分审查,则只加载相关的参考文件。

核心指令

  • iOS 26 是最新的 iOS 版本。除非项目另有说明,新代码的最低部署目标应为 iOS 17 或更高。
  • 目标为 Swift 6.2 或更高版本,并使用现代 Swift 并发。
  • 尊重项目的部署目标。在建议现代 API 之前,先检查其可用性。如果项目面向较旧的 iOS 版本,应推荐可用的最佳替代方案,并用 if #available 检查包裹较新的 API。参考文件会标注关键 API 的 iOS 版本(例如“iOS 15+”)。在未提供回退方案的情况下,不要建议项目最低目标不可用的 API。
  • 作为 UIKit 开发者,用户期望的是 UIKit 模式。除非明确要求,否则不要建议改用 SwiftUI。
  • 未经询问不要引入第三方框架。
  • 将不同类型拆分到不同的 Swift 文件中,而不是把多个类、结构体或枚举放在单个文件里。
  • 使用一致的项目结构,文件夹布局由应用功能决定。
  • 对于新代码,优先使用带 Auto Layout 锚点的程序化 UI,而不是 Storyboard 和 XIB,除非项目已大量使用 Interface Builder。

输出格式 按文件组织发现的问题。对于每个问题:

  • 说明文件与相关行号。
  • 指出被违反的规则(例如“使用 UIAlertController 而不是 UIAlertView”)。
  • 展示简短的前后代码修复对比。
  • 跳过没有问题的文件。最后给出按优先级排序的摘要,说明最应优先进行的改动。

示例输出 ProfileViewController.swift 第 8 行:使用 UIAlertController 而不是已废弃的 UIAlertView。

// Before let alert = UIAlertView(title: "Error", message: msg, delegate: self, cancelButtonTitle: "OK") alert.show()

// After let alert = UIAlertController(title: "Error", message: msg, preferredStyle: .alert) alert.addAction(UIAlertAction(title: "OK", style: .default)) present(alert, animated: true)

第 24 行:使用 NSLayoutConstraint.activate 批量激活约束。

// Before label.topAnchor.constraint(equalTo: view.topAnchor).isActive = true label.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true

// After NSLayoutConstraint.activate([ label.topAnchor.constraint(equalTo: view.topAnchor), label.leadingAnchor.constraint(equalTo: view.leadingAnchor) ])

第 42 行:在添加约束前设置 translatesAutoresizingMaskIntoConstraints = false。

// Before view.addSubview(label) label.topAnchor.constraint(equalTo: view.topAnchor).isActive = true

// After label.translatesAutoresizingMaskIntoConstraints = false view.addSubview(label) NSLayoutConstraint.activate([ label.topAnchor.constraint(equalTo: view.topAnchor) ])

摘要

  • 废弃 API(高):第 8 行的 UIAlertView 必须替换为 UIAlertController。
  • 布局(中):第 24 行逐个激活约束应改用 NSLayoutConstraint.activate。
  • 布局(中):第 42 行缺少 translatesAutoresizingMaskIntoConstraints 会导致约束冲突。

示例结束。

参考文件

  • references/api.md — 废弃的 UIKit API 及其现代替代方案。
  • references/views.md — UIView 生命周期、组合、子类化与自定义绘制。
  • references/layout.md — Auto Layout、布局锚点、UIStackView、固有内容尺寸、安全区域。
  • references/controllers.md — UIViewController 生命周期、容器控制器、避免 Massive View Controller。
  • references/navigation.md — 导航控制器、标签栏、协调器模式、模态呈现。
  • references/tableview-collectionview.md — diffable 数据源、组合布局、单元格配置、预取。
  • references/design.md — 人机界面指南、UIAppearance、trait collections、深色模式、自适应布局。
  • references/accessibility.md — VoiceOver、Dynamic Type、无障碍 traits、标签与提示。
  • references/performance.md — 离屏渲染、图层优化、图像缓存、主线程性能。
  • references/concurrency.md — 主线程安全、async/await、DispatchQueue 迁移、后台任务。
  • references/swift.md — 现代 Swift 代码、Swift 并发、Objective-C 互操作。
  • references/hygiene.md — 内存管理、循环引用、KVO/通知清理、deinit 模式。

适用场景 适用于阅读、编写或审查基于 UIKit 的 iOS 代码,尤其是需要检查现代 API 用法、架构合理性与性能表现的场景。

限制 资料未提供该技能的收费、价格、平台支持范围或具体效果数据。审查建议需遵循项目自身的部署目标与约定,且不应在未询问的情况下引入第三方框架或改用 SwiftUI。