Highlight
Xcode 27 将 Coding Agent 嵌入编辑器主视图,支持
/plan命令先规划后执行;新增 Device Hub 统一管理模拟器与真机调试;Organizer 引入 Metric Goals 和 Agent 驱动的性能修复建议;Instruments 新增 Top Functions 视图快速定位性能瓶颈。
核心内容
工作区重塑:从千篇一律到千人千面
以前打开 Xcode,工具栏的布局是固定的。Scheme 选择器、运行按钮、编辑器模式切换挤在 jump bar 里,长分支名被截断,想调整顺序?没门。
Xcode 27 把工具栏完全交给了开发者。(01:14)历史导航、编辑器控件从 jump bar 移到了顶部工具栏,构建进度显示在窗口标题下方,分支选择器则挪到了底部状态栏——长分支名终于可以完整显示了。最关键的是,工具栏现在支持拖拽增删和重排,你可以把最常用的控件放在最顺手的位置。
主题系统也迎来了大改。(02:23)Appearance 面板里有两个滑块:一个控制文字颜色强度,一个控制背景强度。把背景强度拉满,编辑器背景会变成鲜艳的渐变。不满意预设?可以自定义基础色调,所有派生颜色自动跟随。更妙的是,每个 workspace 可以独立设置主题——给公司的项目配冷色调,给自己的 side project 配 Neon Noir,靠窗口颜色就能一眼分清当前在改哪个代码库。
代码编辑时的视觉干扰也减少了。(01:07)Xcode 27 的 inline issues(实时问题提示)采用了更淡的样式,与构建后的警告/错误区分开来。你在打字时看到的预测性问题提示是淡色的,构建后确认的问题才会显示全强度颜色,或者被自动消除。
打开即写:独立 Swift 文件与无标题项目
以前想快速验证一个 SwiftUI 组件,你得先创建一个完整的 App 项目,等 Xcode 索引完才能开始写代码。这个过程可能要等几十秒,灵感早跑了。
Xcode 27 打破了”必须有项目才能写代码”的束缚。(06:08)从 File 菜单可以直接创建无标题项目(Untitled Project),没有保存对话框打断你,先写代码、后命名保存。不满意?直接丢弃,不留痕迹。
更轻量的是独立 Swift 文件。(07:13)双击打开一个 .swift 文件,即使它不属于任何项目,Xcode 27 也能在 Canvas 中显示 Playground 结果和 UI 预览。同事发你一个算法实现或者 UI 原型,打开就能看效果,不需要把整个项目 clone 下来。
Coding Agent:从代码补全到工程协作
Xcode 27 的 Coding Agent 不再是侧边栏里的聊天窗口,而是编辑器里的一等公民。(07:50)对话记录移到了编辑器面板中,你可以像管理普通代码文件一样用 Tab 和分屏来组织 Agent 对话。工具栏中央新增了 Agent 入口按钮,一键发起新对话或任务。
/plan 命令是这次更新的重头戏。(08:31)在让 Agent 动手改代码之前,你可以先用 /plan 让它先制定实施计划。Agent 会收集必要的上下文,甚至可以派生子 Agent 并行工作。计划生成后,你可以逐条审阅、添加内联反馈,确认无误后再让 Agent 执行。执行过程中,所有代码变更实时显示在右侧面板,生成的文件、截图等产物也一目了然。
Coding Assistant 侧边栏则是一个任务看板。(09:28)所有并行的 Agent 对话和任务列在这里,未读消息和需要输入的状态清晰可见,方便你在多个任务间切换。
Device Hub:模拟器与真机的统一控制台
以前调试 iOS 应用,模拟器是一个独立的窗口,真机调试又要另开一套流程。Xcode 27 用 Device Hub 把两者统一了。(09:57)
在 iPhone 17 Pro 模拟器上运行应用,Device Hub 会打开一个紧凑的窗口,尺寸刚好匹配设备。窗口可以展开,展开后获得 Inspector 和更多控件。(10:26)你可以直接在 Device Hub 里切换高对比度、调整动态字体大小、测试深色模式——这些辅助功能测试以前需要在模拟器设置里翻好几层菜单。
iPhone Mirroring 的测试也集成进来了。(11:02)macOS 27 上的 iPhone Mirroring 窗口支持缩放,Device Hub 让你可以测试不同宽高比和内容尺寸下的表现。如果你的 SwiftUI 视图已经支持了 iPad 和 Mac 上的可调整窗口,这里基本不用额外改动。
最实用的是真机支持。(11:52)侧边栏里模拟器和真机并列显示,配对好的 iPad Pro 上运行的应用可以直接在 Device Hub 里查看和控制。一台 Mac 上就能同时测试多种形态的设备。
本地化:Agent 包办翻译全流程
多语言本地化一直是体力活。提取字符串、创建 String Catalog、逐条翻译、测试布局,每一步都耗时。
Xcode 27 让 Agent 接管了大部分工作。(13:35)在 Agent 对话中请求”为项目设置本地化”,Agent 会扫描代码、确保字符串字面量可被本地化引用、创建 String Catalog 并填充所有 UI 字符串的翻译。整个过程只需要几次对话往返。
String Catalog 本身也有更新。(15:22)选中一种语言后,点击 Generate Translations 按钮,Agent 在后台批量生成翻译。你可以随时在 Agent 对话或 String Catalog 中查看进度。翻译完成后立即运行应用,检查布局截断和文本溢出。
TestFlight 用户也能参与翻译审校。(15:52)母语用户像反馈普通功能一样提交翻译建议,形成闭环。
Organizer:从看数据到解决问题
Organizer 在 Xcode 27 里不再只是数据的陈列柜,而是能主动帮你解决问题的助手。(17:16)
Overview 页面重新设计,诊断信息和指标图表放在同一个视图里。(17:58)顶部指标图表的 spike 告诉你哪里出了问题,下方的诊断信息直接指向代码位置,不需要在两个页面间跳来跳去。
新增了两个指标:Storage(存储占用)和 Hitches(动画卡顿)。(18:21)Storage 指标把文档、数据和二进制包大小分开统计,帮你找到减包的最佳切入点。Hitches 指标则超越了原来的滚动卡顿检测,覆盖了 Liquid Glass 和 SwiftUI 视图的动画场景——那些以前检测不到的动画问题现在无所遁形。
Metric Goals(指标目标)替代了原来的 Recommendations。(19:38)目标基于你的应用类型和技术栈,与同类型应用对比校准,同时参考你自己的历史基线。覆盖的指标更多了:hang rate(卡顿率)、disk writes(磁盘写入)、battery(电量消耗)、storage 和 hitches。
最实用的是 Generate Recommendations 功能。(20:32)在 Organizer 里选中一个性能问题,点击 Generate Recommendations,Agent 会分析诊断数据并给出修复建议。你可以迭代尝试不同的修复角度,直到找到适合代码库的解决方案。
Instruments:Top Functions 直击性能要害
性能调试最怕大海捞针。Instruments 的调用树深不见底,找到真正的瓶颈要花大量时间。
Xcode 27 新增了 Top Functions 视图。(22:02)选中一个时间范围,点击 Top Functions 按钮,Instruments 直接按耗时列出最昂贵的函数。那些因为被频繁调用而累积大量时间的操作,在这个视图里会立刻暴露出来。
演讲中的例子很典型:(22:51)paperPhysics 函数霸占了 Top Functions 列表,原因是循环迭代次数设得太高——这是调试时留下的代码,忘记改回去了。把迭代次数从调试值降到 5,动画卡顿立即消失。修复后再跑一次 Instruments,Top Functions 里已经没有应用自己的方法了,证明问题确实解决了。
Xcode Cloud:一键开启 CI/CD
Xcode Cloud 的设置流程在 Xcode 27 里大幅简化。(25:28)点击 Get Started,确认应用和开发团队,连接远程代码仓库,点击 Start First Build——三步搞定。之后每次提交到 main 或 feature 分支,Xcode Cloud 都会自动构建和测试。构建结果与 TestFlight 和 App Store 无缝集成。
详细内容
工具栏自定义与编辑器模式切换
Xcode 27 工具栏的右侧有一个三向选择器,控制编辑器模式:(01:46)
- 第一项:在 Canvas 中显示预览和 Playground
- 第二项:在 Assistant Editor 中显示相关内容
- 第三项:进入 Source Control 变更审查模式
// 在独立 Swift 文件中使用 #Preview 宏测试 UI
import SwiftUI
struct AirplaneStatsView: View {
let designName: String
let glideRatio: Double
var body: some View {
VStack(alignment: .leading) {
Text(designName)
.font(.headline)
Text("滑翔比: \(glideRatio, specifier: "%.2f")")
.foregroundStyle(.secondary)
}
.padding()
}
}
#Preview("经典设计") {
AirplaneStatsView(designName: "Dart", glideRatio: 3.5)
}
#Preview("高性能设计") {
AirplaneStatsView(designName: "Nakamura Lock", glideRatio: 5.2)
}
关键点:
#Preview宏在独立 Swift 文件中也能工作,不需要项目上下文- 可以给预览命名,方便在 Canvas 中区分不同场景
- 适合快速验证 UI 组件、测试算法原型、分享代码片段
使用 /plan 命令与 Agent 协作
/plan 是 Xcode 27 Agent 工作流的核心入口:(08:31)
/plan
为纸飞机应用添加统计功能,显示不同设计的滑翔比、
飞行距离和滞空时间。需要考虑 SwiftUI 布局和动态类型支持。
Agent 执行流程:
- 收集项目上下文(代码结构、依赖关系)
- 分析需求并制定实施计划
- 派生子 Agent 并行探索不同方案
- 生成结构化计划文档,包含步骤清单
- 开发者审阅计划,添加内联反馈
- 确认后 Agent 开始实施,变更实时显示
关键点:
/plan让 Agent 先思考再动手,避免盲目修改代码- 计划阶段可以反复迭代,不触碰实际代码
- 实施阶段的变更在右侧面板实时可见,随时可中断
Agent 驱动的本地化工作流
Xcode 27 的本地化流程分两步:初始设置和增量添加语言。
初始设置(Agent 对话中执行):(13:35)
请为项目设置本地化,从西班牙语开始。
Agent 自动完成:
- 扫描代码中的字符串字面量
- 将硬编码字符串替换为
String(localized:)调用 - 创建
Localizable.xcstrings文件 - 生成西班牙语翻译
增量添加语言(String Catalog 界面操作):(15:22)
// 代码中使用字符串插值,Agent 能正确提取带占位符的翻译
func boardingMessage(gate: String, time: String) -> String {
String(localized: "Please proceed to gate \(gate) for boarding at \(time).")
}
关键点:
- 使用字符串插值而非拼接,String Catalog 才能正确识别变量占位符
- Agent 翻译时结合项目上下文和 Xcode 的语言风格指南
- 翻译完成后立即运行应用,检查布局截断
Organizer Metric Goals 解读
Metric Goals 的对比维度:(19:38)
| 对比维度 | 说明 |
|---|---|
| 同类型应用 | 基于应用功能和技术栈的相似应用群体 |
| 历史基线 | 应用自身过往版本的表现数据 |
| 目标阈值 | Apple 根据上述数据校准的合理目标 |
Storage 指标细分:(18:26)
- Documents:用户文档和数据
- Data:应用缓存和数据库
- Binary:应用包体大小(影响蜂窝下载和启动时间)
Hitches 指标覆盖场景:(19:11)
- 滚动动画卡顿(原有)
- Liquid Glass 效果渲染
- SwiftUI 视图过渡动画
- 非滚动触发的 UI 动画
Instruments Top Functions 使用步骤
定位性能瓶颈的标准流程:(22:02)
- 在 Xcode 中运行应用(模拟器或真机均可)
- 打开 Instruments,选择 Time Profiler
- 录制应用运行,复现卡顿场景
- 在时间轴上选中卡顿发生的时间段
- 点击 Top Functions 按钮
- 查看按耗时排序的函数列表
- 用 Cmd+Shift+O 在 Xcode 中定位到对应代码
- 修复后重新录制,确认问题函数从 Top Functions 中消失
// 修复前:调试代码遗留的高频计算
func paperPhysics() {
// 错误:迭代次数过高,导致每帧耗时过长
for _ in 0..<10000 {
simulateAirflow()
}
}
// 修复后:降低精度要求
func paperPhysics() {
for _ in 0..<5 {
simulateAirflow()
}
}
关键点:
- Top Functions 擅长发现”单次不耗时但调用次数极多”的问题
- 修复后 Top Functions 中不再出现应用方法,是性能改善的有力证据
- 可以对比修复前后的 Instruments 录制,量化改进效果
核心启发
1. 用独立 Swift 文件做 UI 组件预研
- 做什么:在正式接入项目前,用独立
.swift文件 +#Preview快速验证复杂 UI 组件的各种状态 - 为什么值得做:不需要等待项目索引,不需要处理 Target 依赖,修改-预览循环极快
- 怎么开始:File > New > Swift File,写好组件代码后加上
#Preview宏,Canvas 自动显示预览
2. 让 Agent 接管 String Catalog 维护
- 做什么:每次新增 UI 文案后,让 Agent 自动提取、翻译并更新 String Catalog
- 为什么值得做:避免手动维护字符串 key 的繁琐和出错,Agent 能结合上下文给出更准确的翻译
- 怎么开始:在 Agent 对话中请求”更新本地化”,或在 String Catalog 中点击 Generate Translations
3. 用 Device Hub 做辅助功能回归测试
- 做什么:每次发版前,在 Device Hub 里快速过一遍高对比度、大字体、深色模式三种辅助功能场景
- 为什么值得做:Device Hub 把这些切换做成了快捷按钮,测试成本从几分钟降到几秒
- 怎么开始:在 Device Hub 窗口中点击展开,找到 Inspector 中的辅助功能控件
4. 用 Organizer Metric Goals 监控版本质量
- 做什么:每次发版后查看 Organizer 的 Metric Goals,关注 Storage、Hitches、Hang Rate 是否达标
- 为什么值得做:Goals 基于同类型应用对比和历史基线,能提前发现用户还没投诉的性能退化
- 怎么开始:Window > Organizer > 选择应用 > Overview 页面查看指标趋势
5. 用 Top Functions 替代猜测式性能优化
- 做什么:遇到动画卡顿或响应迟缓时,先用 Instruments Top Functions 定位真正的热点
- 为什么值得做:避免凭直觉修改代码、反复测试的低效循环,一次录制就能找到症结
- 怎么开始:Product > Profile,选择 Time Profiler,复现问题后选中时间范围点击 Top Functions
关联 Session
- Xcode, agents, and you — 深入讲解 Xcode 27 中 Agent 工作流的完整能力
- Get the most out of Device Hub — Device Hub 的高级用法,包括文件操作、数据容器和配置评估
- Profile, fix, and verify: Improve app responsiveness with Instruments — Instruments 性能分析的深度实践
- Build, deliver, and automate with Xcode Cloud — Xcode Cloud CI/CD 工作流的完整配置指南
- Translate your app using agents in Xcode — Agent 驱动本地化的深入讲解和最佳实践
评论
GitHub Issues · utterances