说是 Xcode 下载大小降低,性能方面优化。下载新的 Xcode 26 确实有点感觉。
工作区和代码编辑器的改进
像 safari 浏览器一样的标签页
多词搜索
语音写代码
#Playground
icon composer
字符串目录
智能 AI coding
Writing code with intelligence in Xcode
新的调试和性能相关功能
调试 swift 并发代码时,xcode 能跟随执行流程深入到异步函数内部去 debug。
比如在调用相机权限的时候,没有写使用说明,之前就会 crash。现在 Xcode 会理解这个错误场景,会解释清楚,也增加有 Add 按钮直接跳转到 signing & capabilities 去修改,且会帮助修改更新 info plist 文件。
Instruments
Processor Trace
CPU Counters
SwiftUI 性能
Power Profiler
xcode organizer
通过指标和诊断日志监控 App 的功耗和性能影响。
关于构建方面的新动态
xcode 16 推出显示构建(Explicit Modules)的模块,适用于 C 和 OC 代码。Xcode 26 显示构建的模块默认可以用于 Swift 代码。
Explicit Modules for Swift,每个 Xcode 会把每个边一单元处理分为三个单独截断:1. scan 2. build modules 3.build source
好处:1. 提升构建效率和可靠性 2. 提升 Swift 代码 debugging 的速度
Demystify explicitly built modules
Swift Build
Enhanced Security
Enabling enhanced security for your app
在 xcode 的 Signing & Capabilities 中增加 Enhanced Security。 启用后, xcode 会自动启用一些列安全相关的构建设置和权限。比如:
指针认证(Pointer Authentication) 。防止篡改内存中的指针。启用后,系统会为应用创建的指针生成签名的元数据,然后在访问时验证签名是否被篡改过。要是签名无效,系统就抛出异常并 crash。
类型分配器支持(Typed Allocator Support) 。 在 C 和 C++ 中,内存分配和管理容易出现不好追踪的错误,内存泄露、非法访问等等。有了这个Typed Allocator Support,Xcode 会启用 C 和 C++ 代码中的类型分配器。帮助咱开发编译时候检测潜在的内存问题。
初始化栈变量为零(Initialize Stack Variables to Zero) 。 xcode 会自动将变量初始化为 0,防止某些类型的 user-after-free 漏洞。防止会可能意外的使用到旧的值。
安全相关的编译器警告(Security-Related Compiler Warnings) 。帮助识别潜在的不安全代码。
C++ 标准库加固和编译器边界检查(C++ Standard Library Hardening and Compiler Bounds Checking) 。可以防止数组越界等问题,xcode 会启动 fast mode,对标准库容器进行断言检查。
额外运行时限制(Additional Runtime Platform Restrictions) 。Mach 消息是重要的通信机制。对动态库加载和 Mach 消息进行额外检查,防止攻击者通过 Mach 端口获得提权漏洞等问题。
只读内存用于内部平台状态(Read-Only Memory for Internal Platform State) 。将平台用于内部状态的内存区域标记为只读。如果应用修改了这些区域中的数据,系统会崩溃应用,提升系统安全性。
一些测试体验的更新
增强 UI 自动化录制功能。将交互操作自动转化为测试代码。
增加 XCTHitchMetric,帮助在 App 测试阶段发现卡顿。
推出更多运行时 API 检查
Xcode 在启动时恢复 UI 状态可能会崩溃。(152042209)
升级 Xcode 后首次 build 时,模拟器可能无法启动。(152328794)
当选定的 Xcode 安装位置不在 /Applications/Xcode.app 时,打包工具(ba-package)和模拟服务会立即崩溃。(148927743)
已添加对 arm64e 架构支持的项目模拟器可能没法 build 成功。(123839235)
EXCLUDED_ARCHS[sdk=*simulator] = arm64e
在 OC 中,对 nonatomic 属性的并发修改,现在可以产生有指导意义的 crash (148109501)
0x400000000000bad0
(32 位 watchOS 上是 0xbad0),就像放了个陷阱。这个值可能会被另一个不安全访问该属性的线程读到。那么如果在这个哨兵值上发生崩溃,就表明该属性的线程安全性有问题。帮助开发定位问题。Xcode 26 Beta release Notes
What’s new in Xcode
都看到这了,一键三连不过分吧