大多数浏览器和
Developer App 均支持流媒体播放。
-
Xcode 的新功能
了解 Xcode 14 的最新效率和性能改进。我们将介绍采用全新设计的 SwiftUI 画布体验,探索对代码补齐和导航的优化,并说明我们在整个开发流程期间所做的性能提升。我们还将讨论您现在可以如何读取有关 TestFlight 的反馈并做出回应,而无需离开 Xcode。
资源
相关视频
WWDC22
-
下载
♪ 柔和乐器演奏的嘻哈音乐 ♪ ♪ Jonathon Mah: 大家好 我是 Jonathon Mah Lisa Xiao: 我是 Lisa Xiao Jonathan: 我们非常想向您介绍 Xcode 14 中的新功能 今天 我们将探讨新功能 以及贯穿 Xcode 的 一系列改进 包括代码编辑的体验 和 SwiftUI 预览 多平台 App TestFlight 反馈 和性能优化 内容很多 让我们开始吧 一开始 您可能注意到的变化是 它比以往版本上手更快了 Xcode 14 包体 缩小了 30% 因而下载与安装速度也就明显加快了 您可以按需下载额外的平台 和模拟器 如果您立即需要使用它们 可以在这里获取 或者也可以在稍后 第一次尝试使用时获取
我们正在构建一款名为 Food Truck 的 餐饮外卖 App
伴随着实时预览的 SwiftUI 开发 是一个非常不错的工作流程 现在体验变得更好了 现在预览画布(Preview Canvas) 默认就是交互式的 因此 当您在修改代码的时候 UI 的变化就会实时的呈现出来 画布(Canvas)还有一个新的控件 可以为每个预览创建额外的变体 而无需编写任何代码 您可以改变配色方案(Color Scheme) 文字大小(Text Size) 或设备方向(Device Orientation) 然后立即 看到您的界面在每种场景下的呈现 让我们来看看这些使用不同 动态字体(Dynamic Type)大小的 视图(View)是什么样的
有了这些并排显示(side-by-side)预览 您的就能很容易地来验证界面显示 以确保 App 内容的展现恰到好处 让我们再来检查一下 更大一些尺寸的吧
第一个图标非常宽 导致文字被很尴尬地 换行显示 幸运的是 我的设计师 刚刚要求我对它进行改进 但是只能放在标题(Header) 我们的 CardView 还不支持 在标题上使用不同图标 所以让我们从添加该功能入手 我将切换到实现部分
标题和内容(Content)使用了 同一张图片 让我们专门为标题 添加另一个图像(Image)属性
在大多数卡片(Card)中 在两个地方使用相同的图像 看起来会比较好 我们可以通过添加带默认值的自定义 初始化器(Custom Initializer) 来节省 更新每个现有调用的时间
当我开始输入初始化器时 Xcode 14 现在给出了 方法代码补全的选择 我可以接受默认值作为 我自定义的起点 这样节省大量时间 这也适用于可编码(Codable)方法 让我们给 headerIcon 参数 设定一个默认值
现在 我们将回到 CardStack 视图 并使用这个新功能
我的设计师让我在这里使用日历符号 库中现在包含 所有 SF Symbols 可以很容易地确保 我使用了正确的那一个
我可以按回车键插入 正确的代码 来使用这个符号
这个符号看起来非常合适 从预览变体中得到的 新的并排显示比较 可以轻松确保您的 App 在用户选择各种设置时都很美观 除了初始化器和可编码定义 Xcode 14 还提供 更多智能建议 这样你就可以更快更容易地 将你的想法付诸实现 让我为您继续演示
当我开始添加另一个卡片视图时 初始化器现在 直接出现在代码补全列表中 headerIcon 参数为斜体 因为它带有一个默认值 如果我接受代码补全 它不会包含 headerIcon 标签 而会使用我们刚刚添加的默认值 我想再专门 处理一下图标(Icon) 然后来选择可以加入的内容
我会为我新建的卡片赋一些值
我想要新卡片前面 加一条分隔线(Divider) 在 VStack 添加一条分隔线 就会出现一条横跨整个UI宽度的分割线
为了让它看上去更精致 我将使用 frame 来设置最大宽度
frame 修改器有很多可选参数 新的补全功能让我可以轻松获取 所需的参数
这就是 Xcode 14 中的 代码补全功能 第一张卡片的标题(Title) 是由一个方法创建的 我听说它并没有正确处理所有的数字 就让我们来看看它是如何实现的 我将按住 Command 键点击这个方法 并选择跳转到定义(Jump to Definition)
重新设计的定义列表(Definition List) 突出了每个结果的 不同之处 这样您就可以快速选择您想要的定义 由于我们的 text(for:) 方法来自协议(Protocol) 所以会有多个选项可供选择 列表显示了定义该方法的具体类型 有来自协议的声明 和两个实现 我将前往服务器支持(Server-Backed)的实现
该类实现语法解析 是使用正则表达式逐字处理的 这是 Swift 5.7 中的新功能
我的同事告诉我 有个相关问题 被单元测试捕获出来了 现在让我们来运行一下
是的 出现了一些失败的情况 让我们来看一看
提取事件计数似乎有问题 让我们检查一下 这个函数是如何被调用的 我可以按住 Command 键点击 通过打开此方法的调用者(Caller) 来直接看到它 和定义列表一样 调用者列表 显示不同的文件和函数 它们均包含对此方法的调用 列表还将显示每个调用点的预览
这是来自失败测试方法的调用 预览给我显示 测试传递了字符串“0 records” 这给了我关于问题的提示 现在我可以找到错误所在 正则表达式与数字 1-9 匹配 但我忘了把 0 也包括进去 我可以通过将字符范围 更新为 0-9 来解决这个问题 或切换到更具描述性的 Digit 字符类
但还是有些不对劲 不过现在编译器告诉了我原因 正则表达式 在 Swift 5.7 中 一个一级功能 编译器对我的正则表达式 像对待其它代码一样的检查方式 Xcode 会立即 突出显示我的错字 请注意 当我更正表达式时 会发生两件事 正则表达式中的语法高亮 确认我的编辑 错误暗淡了
这处暗淡显示 表明 Xcode 正在重新评估诊断程序 当我暂停片刻后 文件被重新处理 Xcode 确认错误已解决 这种暗灰也出现在长时间的构建过程中 让您可以很容易地分辨出 哪些问题来自最新的构建 哪些来自以前的构建 让我们前往测试
这让我直接跳转到位于 测试方法中间的调用 来看一看编辑器的顶部 Xcode 14 会显示 包含预览代码的定义部分 即使它们被滚动到视图之外
我可以使用顶部的 测试菱形来重新运行测试
好极了 修复通过了所有测试 有了 Xcode 14 您可以使用新的代码补全功能 更快地编写代码 使用 SwiftUI 预览变体 流畅地进行设计 通过改进的错误呈现方式 获得更多信息 并通过跳转到定义功能 确信地找到方向 还有更多功能 由 Lisa 来介绍 谢谢您 Jonathon 让我们来看一看构建性能的改进 当 Xcode 构建多个目标 比如框架和 App 时 它将首先编译框架的源代码 然后生成一个模块(Module) 启用链接(Linking) 并编译 App 源代码 然后它链接 App 完成构建 Xcode 14 会重新安排 您的构建以提高并行性 通过即时生成 Swift 模块 Xcode 解除了构建任务的 阻塞并增加了并行性 它缩短了构建中的所有关键路径 同时更理解您 使用机器的情况 但我们的改进并未就此止步 我们还通过增加并行性 使链接器的 速度提高了两倍 总体而言 使用 Xcode 14 构建项目的 速度提高了最多 25% 内核最多的机器 看到的改进也最大 即使改进了构建调度 有时您的项目可能还是会有 对比较长的同步任务的内部依赖 在没有可视化的情况下 将很难发现它正在发生 好消息是 我们已将它 包含了在 Xcode 14 中 您可以在任何构建日志(Build Log) 或结果包(Result Bundle)上 打开新的构建时间线(Build Timeline) 它将帮助您识别意想不到的长任务 和性能瓶颈 这是 Food Truck 的 构建时间线 可以看到有一脚本阶段(Script Phase) 将构建限制在单个核心上 有了新的构建时间线 您可以获得关键的洞察(Insight) 并识别 构建中性能优化的机会 您可以查看以下讲座 来全面了解并行化构建 新的构建时间线和链接 “Demystify parallelization in Xcode builds” 和“Link fast: improve build and launch” Xcode 中的并行测试 是将测试更快运行的好方法 在 Xcode 14 中 它变得更好了 我们使用刚才为您演示的相同技术 来提高构建性能 Xcode 14 消除了 目标和测试类 之间的调度依赖 进一步增加了测试期间的并行性 如果您需要在不同的测试类和目标中 进行长时间运行的测试 此功能可以将您的测试执行时间 缩短最多 30% 如想了解如何提高测试速度和可靠性 请查看 “Author fast and reliable tests for Xcode Cloud”讲座 构建变得更快 测试变得更快 为您的 macOS App 进行分发准备也变得更快了 我们在 Xcode 14 中 将公证速度提高了四倍 对于使用界面生成器 (Interface Builder)的项目 我还带来了更多好消息 文件加载速度最多可提高 50% 在设备栏中 执行 iPhone 和 iPad 之间的切换速度提高了 30% 画布编辑操作是渐进式的 并优先您正在查看的场景 以便为您提供即时反馈 在大型故事板(Storyboard)中也是如此 Xcode 14 速度更快 也更容易使用 就让我来向您展示 Xcode 14 让您 将 App 带到 不同平台变得简单 您可以使用单个目标 来定义您的 App 并列出您支持的平台 这就消除了保持 设置和文件同步的需求 您只需要描述每个平台的独特性即可 请查看“Use Xcode to build a multi-platform app”讲座 了解如何在您的 项目中充分利用此功能 Xcode 也提供优秀的工具 来使您 App 更小 内存调试器(Memory Debugger)在 发现 App 中的泄漏方面 一直表现出色 它通过从根对象(Root Object)到 意外活跃对象之间最短的路径上归零 让您可以调查泄漏的原因 Xcode 14 进一步 扩展了这些功能 使您可以看到所有进出 一个对象的引用路径 除了更彻底地泄漏解释 现在您还可以估算对象的总权重 在 Xcode 14 中 您还可以通过 Swift 软件包插件(Swift Package Plugin) 扩展 Xcode 本身 现在软件包可以集成插件 在合适的位置处理您的代码 比如 linter 和 formatter 您可以直接从 项目导航器中调用它们 您还可以集成生成代码或在 构建时处理资源的构建工具 例如 您可以在构建过程中 将远程过程调用接口的高级描述 转译为底层胶水代码 您还可以在构建时 压缩或优化资源 如想深入了解软件包插件 请查看“Meet Swift Package plugins” 和“Create Swift Package plugins”讲座 您还可以像 App 一样 本地化软件包资源 现在您可以设置软件包的 默认本地化 导出本地化目录 转译并重新导入 如想了解更多有关本地化的信息 请查看 “Building global apps: Localization by example”讲座 接下来 让我们了解一下 运行目的端选择器(Run Destination Chooser) 在设备之间更为顺畅切换 是我们一直在做的事情 现在您可以使用 更新后的运行目的端选择器 更轻易地获取需要的设备 让我们来看一看
当您打开运行目的端选择器时 它显示了对于选定的方案而言 所有可用的运行目的端 我经常在 iPhone 和 iPad 之间切换 新的运行目的端选择器 优先考虑最近的选择 所以用起来非常方便 选择其他最近没有使用的 设备也很容易 我可以在这里过滤列表 键入“max”将 所有 Max 设备一起选出来 并轻松选择我想要的那个 与此相同的功能在 在方案选择器(Scheme Chooser)中 也可以使用 接下来 让我们看一看 Organizer 窗口 我们对 Organizer 进行了几项重大改进 帮助您识别新问题 并改进您的 App Organizer 中新增了两项报告 来帮助您了解 App 在用户设备上的 运行情况 反馈(Feedback)和卡顿(Hangs) 让我们深入探讨一下
反馈 Organizer 将您 所有的 TestFlight 反馈 直接显示在 Xcode 中 我们的 TestFlight 用户 发来了讨论我们最近构建的 很棒的评论和截图 检视器(Inspector)中显示了更多细节 比如测试人员(Tester)信息 和设备配置 可以帮助确定潜在的问题 如果我想了解更多背景情况 可以使用此按钮 直接向测试人员发送电子邮件 TestFlight 反馈 来自 Beta 用户 但还是有些问题会躲过测试 并进入 App Store 最常见的此类错误之一就是卡顿 如果在使用主线程时 不留空隙来处理用户输入 您的 App 就会卡顿 您的代码可能正在执行重要的操作 但用户体验到的 却是一个无响应的 App 新的报告会显示 对 App Store 用户 影响最大的卡顿 让您知道需要重构哪些代码 才能产生最大的影响 左侧列出了一系列卡顿 按严重程度排序 每一条都附带加权回溯 来显示有问题的代码 我们的 App 支持许多 设备和操作系统版本 有的卡顿对某些配置的影响 比其他卡顿更大 在检视器中 发现此类卡顿 主要发生在 iOS 15.3 上 当我准备好对它进行操作时 可以直接使用 “Open in Project” 按钮跳转到代码 新的卡顿和反馈报告 帮助您筛查问题 并快速为用户提供正确的修复 如想了解有关修复卡顿的更多信息 请查看“Track down hangs with Xcode and on-device detection”讲座 接下来 让我们来看看图标(Icon) 我们 App 的图标在 各种尺寸下看起来都很棒 因为我们已经花时间 进行了像素提示(Pixel Hint) 并为每种分辨率选择正确的条纹数量 所以它看起来一直很清晰 像素提示对于某些 图标来说是必不可少的 对于其他图标来说则是不必要的 我们现在有一个新图标 让我们一起来看看 这些更简单的纹理不需要任何提示 并且在任何尺寸下看起来都很棒 通过连按 我可以选择新图像 在 Xcode 14 中 您可以选择 适合自己的精细程度 就这个图标来说 我们的单个图像看起来就很棒 我将使用新的单一尺寸功能 要求 Xcode 由此出发自动创建 我们需要的所有不同尺寸 为此 我可以在 检查视器中选择 “ Single Size ” 这样就完成了 这就是对 Xcode 14 中 新功能的简要介绍 它将更快更便捷地帮助您进行开发 感谢您的观看 Jonathan:现在就去下载 马上开始使用吧 ♪
-
-
正在查找特定内容?在上方输入一个主题,就能直接跳转到相应的精彩内容。
提交你查询的内容时出现错误。请检查互联网连接,然后再试一次。