Platforms State of the Union (ASL)
Essentials 进阶 20m

平台技术概览

Platforms State of the Union (ASL)

2022年6月6日

在 Apple 官方观看视频

一句话判断

这是 WWDC 2022 的技术版”国情咨文”——如果你只想看一个 Session 了解今年整个 Apple 开发平台的技术方向,就看这个。

这场 Session 讲了什么

Apple 高管和工程团队负责人联合发布了 2022 年开发者平台的技术全景。内容覆盖三大主题:开发平台的愿景和演进(Swift + SwiftUI + Xcode 的三位一体)、应用与系统体验的深度集成、以及新的强大 API。

Swift 部分重点介绍了并发模型的扩展(async algorithms 包、distributed actors)、C++ 互操作性的进展。SwiftUI 部分涵盖了新的导航 API、高级图形效果、以及与 Swift Concurrency 的深度整合。Xcode 部分宣布了 Xcode Cloud 正式上线,并提供 2023 年底前的免费额度。

还介绍了 WidgetKit 的新功能(Live Activities、实时更新)、新的图表框架 Swift Charts、以及 vision相关框架的更新。

值得深挖的点

Swift + SwiftUI + Xcode 的三位一体。 Apple 明确了下一代开发平台的三大支柱:Swift 作为语言、SwiftUI 作为框架、Xcode Previews 作为工具。三者协同设计——Swift result builders 源自 SwiftUI 的组合结构,SwiftUI 的声明式视图由 Swift 值类型驱动,Xcode Previews 专门为两者打造。第一年就有超过 40,000 个 App Store 应用采用了 Swift Concurrency。

Distributed Actors。 在本地 actor 的基础上,Swift 新增了 distributed actors,支持跨进程、跨设备的 actor 通信。使用 distributed 关键字标记的方法可以被远程调用。这为 Swift on Server 场景提供了原生的分布式计算模型。

Xcode Cloud 正式发布。 CI/CD 服务终于正式上线。所有 Apple Developer Program 成员可获得每月 25 小时的免费额度(到 2023 年底)。它集成 TestFlight 和 App Store Connect,支持所有主流 Git 服务提供商,并提供 REST API。

Swift Charts。 全新的声明式图表框架,使用 SwiftUI 风格的 API 构建各种图表。支持自定义标记、坐标轴、交互,并内置无障碍支持(VoiceOver 导航和音频图表)。

Swift Concurrency 向后部署。 Swift Concurrency 现在可以部署到过去三年发布的所有操作系统版本,大大扩大了可用的用户群。

代码片段

// Distributed Actors 示例(Swift 新特性)
distributed actor TemperatureSensor {
    distributed var currentTemperature: Double {
        get throws { /* 获取温度 */ }
    }
    
    distributed func startMonitoring() {
        // 远程可调用的方法
    }
}

// Swift Charts 基本用法
import Charts

struct SalesChart: View {
    let data: [Sale]
    
    var body: some View {
        Chart(data) { sale in
            BarMark(
                x: .value("月份", sale.month),
                y: .value("销售额", sale.amount)
            )
        }
    }
}

// Async Algorithms 包示例
import AsyncAlgorithms

// 合并两个异步序列
for await (user, location) in zip(userStream, locationStream) {
    print("\(user.name) at \(location.city)")
}

// 节流:限制更新频率
let throttled = updateStream.throttle(for: .seconds(1))

最佳实践

  • 开始采用 Swift Concurrency,它现在可以部署到大部分活跃设备
  • 利用 Xcode Cloud 的免费额度建立 CI/CD 流水线
  • 使用 Swift Charts 替代第三方图表库,获得原生性能和自动无障碍支持
  • 关注 Distributed Actors 的进展,为未来的分布式场景做准备
  • 将活跃开发的代码迁移到 SwiftUI,Apple 的框架更新优先支持 SwiftUI

还有什么值得关注

  • Live Activities 和 ActivityKit 让应用可以在锁屏上展示实时信息
  • WidgetKit 支持更频繁的更新和新的家族尺寸
  • Swift Package Manager 继续增强,包括包插件(Package Plugins)支持自定义构建流程
  • Xcode 14 在编辑器性能、调试工具和 Instruments 方面都有显著改进
  • C++ 互操作性正在开发中,未来可以让 Swift 代码直接调用 C++ 库
WWDC 2022