Xcode 15一些有意思的更新点
文章内容主要截取自 Session What's New In Xcode[1] 及 Xcode 15 Beta Release Note[2]
安装包体积
体积更小了,因为 iOS 模拟器也不再内置了,Xcode 安装完后需要补充下载 iOS 模拟器
代码补全
在新建文件里定义 class
或者struct
是会以文件名自动补全类名或结构体名称View
后面输入修饰符时会自动将该视图最常用的修饰符放在最前面,而且还会感知上下文,比如text
设置了font
接下来会给你bold
修饰符,Stack
是padding
、Text
是font
、Image
是resize
等
资源管理
asset
里的图片、颜色也会自动生成符号,这样后续被改名了,会编译报错(Swift、Objectiver-C
均支持)Objectiver-C 需要导入
GeneratedAssetSymbols.h
头文件,然后使用生成的字符串常量Swift 则是直接
Image(.appleLogo)
,UIImage(resource: .appleLogo)
,Color 也类似,appleLogo
是它在 asset 中的名字自动生成资源符号编译器是默认开启的,如果想要禁用可以将编译选项 “Generate Asset Symbols” (
ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOLS
) 设置为NO
可以把之前的多语言文件(
.string
)转换为 string catalog,有一期专门的 session 来讲 Discover String Catalogs
文档能力
代码文档也增强了,增加了实时预览功能, Editor->assistant->Documentation Preview
,也有一集专门的 Session Create rich documentation with Swift-DocC
编辑器
Vim 模式现在支持
gd
来跳转到代码定义处新增了快捷键
Cmd + shift + A
来执行一些快捷命令,有点 Alfred/Raycast 那味了
预览
可以使用新的 Swift 宏,来预览 UIKit/AppKit
的内容基于时间线的 Widget
小组件也支持预览了
导航
可以添加书签了,并且可以给书签添加自定义描述,终于不需要用断点来搞了
还可以自定义分组,可以用做 todo list
某些搜索条件(query)也可以作为书签,这样满足搜索条件的搜索结果会归类在这一条件的书签下,如果后续有新增满足条件的,只需要点击刷新按钮即可更新最新结果
源码控制
可以区分 stage
和unstage
两种状态,前者为浅蓝
可以直接在 Xcode Source Control
中 review
变更(类似 SourceTree、Fork 这种 GUI 工具),然后查看可以拖拽查看更多上下文
测试
单测运行速度比以往快了 45%(使用 Swift 重写) 测试报告展示也更条理清晰,还能查看测试回放(UI 测试),更多可以参看 Fix failures faster with Xcode test reports
调试
Console 对于 OSLog 的全新支持,可以在 console 中进行多维度过滤筛选以及展示的内容; 右键点击某一条 log 还能够直接跳到对应源码处 更多内容可以查看 Debugging with structured logging
发布
Xcode Cloud 的两点增强 可以直接添加 TestFlight 的测试内容(类似更新说明) pipeline 流水线中添加一个 Post Action 来 Notarize Mac 应用 XCFramework 的作者也可以通过 PrivacyInfo.plist 中声明框架会访问哪些隐私数据 可以直接搜集引入的 XCFramework 所涉及到的隐私访问,进而可以告知用户;
更多可以查看 Verify app dependencies with digital signature 及 Get started with privacy manifest Xcode 15 现在还支持 TestFlight 的内部测试(内测版本)
更多查看 Simplify distribution with Xcode and Xcode Cloud
参考资料
[1]What's New In Xcode: https://developer.apple.com/videos/play/wwdc2023/10165/
[2]Xcode 15 Beta Release Note: https://developer.apple.com/documentation/xcode-release-notes/xcode-15-release-notes