# 老司机 iOS 周报 #257 | 2023-08-21

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/257.png?raw=true)
老司机 iOS 周报，只为你呈现有价值的信息。

你也可以为这个项目出一份力，如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们，我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。

## 新闻

### [SSWG 2023 Annual Update](https://www.swift.org/blog/sswg-update-2023/)

[@kemchenj](https://kemchenj.github.io/)：Swift 服务端工作组发布了今年的年度进度报告

**2022 年的成果：**

- 加快 Concurrency 的适配进度
  - SSWG 孵化的项目全部都已经适配了 Concurrency 的 API，并且社区里新的项目也基本都是用了 Concurrency
  - [自定义 Actor 调度器](https://github.com/apple/swift-evolution/blob/main/proposals/0392-custom-actor-executors.md)的提案从提出到正式实现
- 优化提升工具链的使用体验
  - Swift for VSCode 插件 1.0 发布
  - Swift 插件在生态里的采纳率上升，从 formatter，linter 到 code generator 都大部分实现了 Swift 插件
  - 发布了 Swiftly，一个 Swift 版本管理工具，方便 Linux 上安装和管理 Swift 版本
- 优化编译时间，针对服务端项目的一系列编译优化。

**2023 年的目标：**

- 继续集中在社区生态建设
- 促进 Structured Concurrency 的采纳和适配
- 优化文档和指引
- 优化提升工具链的使用体验

## 新手推荐

🐕 [ARM 汇编快速入门](https://mp.weixin.qq.com/s/-RQ_gtI0siCJ9cKO-hAFWg)

[@xuyafei86](https://github.com/xiaofei86)：本文主要分享如何快速上手 ARM 汇编开发的经验、汇编开发中常见的 Bug 以及 Debug 方法、用的 Convolution Dephtwise 算子的汇编实现相对于 C++ 版本的加速效果三方面内容。

## 文章

### 🐢 [Releasing Swift Transformers: Run On-Device LLMs in Apple Devices](https://huggingface.co/blog/swift-coreml-llm)

[@zoeGuo](https://github.com/zoeGuo)：随着大模型的持续火热，以及各路大模型的涌现，想必有很多开发者已经跃跃欲试。这是一篇由 Hugging Face 的工程师发布的指导 Swift 开发者在 Mac 上运行大模型的文章。文章主要有以下内容：
- 将模型转换为 CoreML 格式的几种常用方式：[transformers-to-coreml](https://huggingface.co/spaces/coreml-projects/transformers-to-coreml)、[exporters](https://github.com/huggingface/exporters)、[coremltools](https://github.com/apple/coremltools)，还有模型转换的一些踩坑经验
- 开发工具时关注的一些性能优化指标
-	[swift-transformers](https://github.com/huggingface/swift-transformers) 提供的丰富的功能：分词能力，分模型配置能力，生成算法，以及目前已经支持的模型
-	[swift-chat](https://github.com/huggingface/swift-chat) 一个使用 [swift-transformers](https://github.com/huggingface/swift-transformers) 的 Demo

文末作者还写了一些后续会完善更新的内容。总之这是一篇干货满满的文章，感兴趣的读者可以阅读原文。

### 🐕 [Adapting an App to visionOS](https://varrall.substack.com/p/adapting-an-app-to-visionos)

[@EyreFree](https://github.com/EyreFree)：这篇文章描述了作者如何将他的板球应用从 SwiftUI 迁移到 Vision Pro 设备。首先，因为 iPad 应用不支持 visionOS，所以作者在 Xcode 中为 visionOS 创建一个全新工程并将现有代码复制了过去。然后作者还提到了一些其他具体的细节，例如添加 WindowGroup、调整背景和颜色以适应 visionOS 的特性等。同时作者发现 visionOS 上的彩色文字难以阅读，建议其他开发者注意此问题。在文章的最后，作者表示在几个小时内完成的进展令自己非常满意，看起来整体迁移的体验还是很不错的。建议有在做 visionOS 开发 / 适配的朋友阅读本文。

### 🐎 [Build performance analysis for speeding up Xcode builds](https://www.avanderlee.com/optimization/analysing-build-performance-xcode/)

[@Cooper Chen](https://github.com/cjlcooper)：在开发过程中，缓慢的构建通常会分散我们的注意力并影响效率，本文从通过 Xcode 建立 Build 耗时基线开始，使用 Build Timing Summary 进行 Build 时间分析，并且提供了一些 Build 加速的小技巧，作者主旨是在提醒开发者重视项目构建时间，这对于大型工程已经多团队开发有着至关重要的影响，通过本文也可以为相关领域的开发同学提供一些优化的思路。

### 🐎 [Dead Code Detection With Reaper](https://www.emergetools.com/blog/posts/dead-code-detection-with-reaper)

[@老峰](https://github.com/gesantung)：很多大型项目在长时间的维护迭代过程中会产生很多无用代码如无调用的、不会执行的分支等。本文介绍了 iOS 新框架 Reaper，其大致原理是 OC 中所有类在第一次使用时都会发送一个 +initialize 方法(Swift 需特殊处理)，只需接入 SDK 运行时检测无用代码并生成报告，它还可以获得每个类的使用时间，也可以用作启动优化，感兴趣的朋友可以尝试。

### 🐢 [swiftui-cookbook](https://www.kodeco.com/books/swiftui-cookbook)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：SwiftUI Cookbook 是由 Kodeco 团队提供 , 在 SwiftUI 中创建用户界面的常见模式的参考，涵盖了使用 SwiftUI 开发用户界面时必须解决的常见问题 , 可以在编码时快速参考。SwiftUI Cookbook 适合任何编写 SwiftUI 代码并需要快速刷新特定语法或技术的人。

### 🐎 [AppKit vs SwiftUI: Stable vs Shiny](https://milen.me/writings/appkit-vs-swiftui-stable-vs-shiny/)

[@水水](https://www.xuyanlan.com/)：在编写原生 macOS 应用程序时，开发人员需要决定在哪个 UI 框架中编写新代码，是选择 AppKit 还是 SwiftUI ？在 2022 年 WWDC 上 Josh Shaffer 阐述了未来平台的愿景说构建应用程序的最佳方式是使用 Swift 和 SwiftUI ，但 SwiftUI 并不是当今 AppKit 的完全替代品，尤其是在 MacOS 上的表现上。很多开发人员表述了使用 SwiftUI 并不如现象中简单，会遇到的各种问题。虽然比不过 AppKit 在 30 年的稳定和成熟，但是 SwiftUI 正在多个维度上解决一个更加困难的问题：声明性、跨平台、重写，而且很显然苹果重心是放在 SwiftUI 上。所以如何选择 UI 框架：

- 为了对 UI 框架做出明智的决策，我们需要了解是什么推动了决策，用例和优先级是什么。
- 如果你想玩一个崭新的 API，或者用一个新的模式写一个应用程序，那么 SwifUI 显然是赢家， 你将获得重要的技能，你将能够在未来发挥作用。
- 要支持旧版本的 macOS，请使用 AppKit。
- 对于长格式文本编辑或数千条记录，请使用 AppKit。
- 对于现有的 AppKit 应用程序，请逐步添加 SwiftUI。
- 对于其他一切，请从 SwiftUI 开始，并根据需要包含 AppKit。


## 内推

重新开始更新「iOS 靠谱内推专题」，整理了最近明确在招人的岗位，供大家参考

[杭州] 阿里巴巴 — 内容终端技术团队 — 手淘首页 & 信息流方向 — iOS/Android

[上海] - 完美世界 电竞 - iOS

[北京 / 杭州] - 抖音投屏 - Android/iOS

[北京] - 百度网盘 iOS/Android/FE/Server 研发工程师

[深圳 / 广州 / 北京 / 三亚] 字节跳动 - 剪映 - 招聘客户端开发

具体信息请移步：https://www.yuque.com/iosalliance/article/bhutav 进行查看（如有招聘需求请联系 iTDriverr）

## 关注我们

我们是「老司机技术周报」，一个持续追求精品 iOS 内容的技术公众号，欢迎关注。

**关注有礼，关注【老司机技术周报】，回复「2023」，领取 2023 及往年内参**

![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true)

同时也支持了 RSS 订阅：https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。

## 说明

🚧 表示需某工具，🌟 表示编辑推荐

预计阅读时间：🐎 很快就能读完（1 - 10 mins）；🐕 中等 （10 - 20 mins）；🐢 慢（20+ mins）
