# 老司机 iOS 周报 #293 | 2024-06-17

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

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

## 新手推荐

### 🐎 [Bad practice: not using a ButtonStyle](https://www.swiftwithvincent.com/blog/bad-practice-not-using-a-buttonstyle)

[@Kyle-Ye](https://github.com/Kyle-Ye): 本文介绍了一些不使用 ButtonStyle 的 bad case，一篇关于 SwiftUI ButtonStyle 的入门科普。

## 文章

### 🌟 🐕 [QQ 客户端性能稳定性防劣化系统 Hodor 技术方案](https://mp.weixin.qq.com/s/ng_R0s9tAsFCdc2O1JE_Pw)

[@JonyFang](https://github.com/JonyFang): 手 Q 的防劣化系统命名为 Hodor 系统，从 2021 年 10 月开始研发，历时近三年迭代至今。系统涉及验证闭环、群控机架搭建等复杂过程，包含不少行业内独创方案。与厂商合作进行底层问题沟通，并在 2024 年拓展至 QQ 桌面客户端。系统目前已在 QQ 各平台落地，方案可做借鉴。

### 🐎 [Comparing Swift Compiler Performance on Type Inference Part I Strings, Numbers, Arrays, Dictionaries and Constructables](https://lucasvandongen.dev/compiler_performance.php)

[@kemchenj](https://kemchenj.github.io/): 这篇文章比较了 Swift 编译器在进行类型推断时的性能，特别是在字符串、数字、数组、字典和可构建类型的初始化方面。作者通过基准测试发现，使用未类型化的字面量初始化通常最快，而使用 `.init()` 的方式最慢。特别是在复杂上下文中，例如计算属性，`.init()` 的性能下降明显。文章还指出，不同版本的 Xcode 在编译性能上的差异，并提出了优化编译时间的具体建议。

### 🐎 [iOS 18: Notable UIKit Additions](https://www.swiftjectivec.com/ios-18-notable-uikit-additions)

[@Kyle-Ye](https://github.com/Kyle-Ye): 本文介绍了 iOS 18 中 UIKit 一些值得注意的新增功能 :
- 自动 Trait 跟踪 : UIKit 会自动检测某些生命周期函数中涉及的 Trait 变化 , 并调用相应的更新函数，减少了开发者需要手动注册特征变化监听的代码。
- UIUpdateLink: UIUpdateLink 提供了比 CADisplayLink 更好的性能和电池效率 , 可用于复杂动画和绘制应用程序。
- 更多符号动画 : 新增了摇摆、呼吸和旋转等三种新的符号动画效果。
- 自定义文本格式化 : 开发者可以自定义文本编辑器中显示的格式化工具，默认关闭需要手动 opt-in。

### 🐎 [Rust - 性能超越 Kotlin 的跨平台方案](https://mp.weixin.qq.com/s/b8lHRfk5G2yN7pkoURU7CA)

[@Smallfly](https://github.com/iostalks)：这篇文章讨论了跨平台开发技术，指出 Rust 由于内存安全、并发安全和 WebAssembly 支持，成为 C/C++ 的替代品，特别适合处理跨平台业务逻辑。文章分析了桥接、IPC 和 Canvas 绘制等跨平台方案，并提出使用 Rust 作为「前端中的后端」，通过 protobuf 等高效序列化方式与原生平台通信。Rust 在性能上超越 Kotlin Native，适合开发底层库。作者建议 Rust 可替代 C++ 用于跨平台开发，提供更现代的语法和更安全的代码。

## 代码

### 🌟 🐕 [o3d](https://mp.weixin.qq.com/s/_EaqpWF-CgCgX0sTkXoHsw)

[@Damien](https://github.com/ZengyiMa): o3d 是一款 Flutter 3D 渲染插件，它是一个能够在 Flutter 上渲染 glTF 和 GLB 格式 3D 模型的 widget 插件，支持 Android，IOS，Web 三个平台，不仅支持加载本地文件，而且支持加载在线文件。

### 🐎 [swift-testing-revolutionary](https://github.com/giginet/swift-testing-revolutionary/)

[@DylanYang](https://github.com/Dylan19Yang): swift-testing-revolutionary 是一个 Xcode 插件，可以帮助开发者快速将自己现有项目中的的 XCTest 框架的测试代码自动迁移到苹果最新推出的 swift-testing 测试框架中，插件支持了大部分的代码转化，但仍有小部分需要人工处理。你也可以通过 Command Plugin 或者命令行工具来使用它。

### [Cocoapods-sled 让 iOS 组件二进制化变得简单](https://juejin.cn/post/7375419781132042267)
[@莲叔](https://aaaron7.github.io)：二进制化是加快编译速度的常见手段，很多大厂在这个方向都做过不小的研究。但目前行业上还缺乏比较泛用的方案。cocoapods —— sled 这个插件就是为了解决这个问题，能针对 pod 进行二进制化并且能灵活的切换二进制和源码构建。有类似需求的小伙伴可以试试。

## 内推

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

具体信息请移步：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）
