# 老司机 iOS 周报 #268 | 2023-11-20

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

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

## 新手推荐

###  [Generating Random Numbers Elegantly in Swift ](https://www.swiftjectivec.com/swift-randomnumbergenerator/)

[@zoeGuo](https://github.com/zoeGuo)：文章介绍了在 Swift 中使用 RandomNumberGenerator 实现产生随机数的方式。写法优雅，可以产生自己任意范围的随机数，线程安全，还会根据 Swift 运行的平台来决定实现随机数的 api。

## 文章

### 🐎 [Reasoning about protocols](https://www.swiftindepth.com/articles/reasoning-about-protocols/)

[@J_Knight_](https://github.com/knightsj)：本文作者结合代码实例介绍了在 Swift 中面向协议编程的几个应用场景（动态派发，类泛型，编译期约束和实现合成）。

### 🐕 [在 Airbnb 爱彼迎解锁 SwiftUI](https://mp.weixin.qq.com/s/AokW7NZvjBT76iaRnEnsOA)

[@AidenRao](https://weibo.com/AidenRao)： 这篇文章介绍了 Airbnb 在 iOS 应用中采用 SwiftUI 替代原有的 UI 框架 Epoxy 的实践。 也解释了为什么他们决定在 Airbnb 中使用 SwiftUI，并详细介绍了如何将 SwiftUI 集成到 Airbnb 的界面设计中。一个很好的实践，可以作为大家引入 SwiftUI 的参考。

### 🐕 [The complete guide to iOS & macOS development in Neovim](https://wojciechkulik.pl/ios/the-complete-guide-to-ios-macos-development-in-neovim)

[@Smallfly](https://github.com/iostalks)：使用 Xcode 开发大型项目的体验一言难尽，这篇文章手把手教你如何在 Neovim 搭建 iOS&macOS 开发环境。支持的功能主要有：
- 代码补全（Code Completion）
- 代码检查与格式化（Linting & Formatting）
- 构建、运行与测试（Build, Run & Test）
- 调试（Debugging）

所有这些一起至少覆盖了 90% 以上的开发时间，还有少部分功能还是需要依赖 Xcode，例如性能跟踪、调试 UI、管理签名证书等。如果你是一名 vim 党，推荐一试。

### 🐎 [An early look at the future of testing with swift-testing](https://www.polpiella.dev/swift-testing/)

[@kemchenj](https://kemchenj.github.io/)：Swift 团队在前一段时间推出了 swift-testing 的 beta 版本，旨在替代 XCTest，让开发者可以用更加现代化的语法编写测试。

这篇文章用一个简单的例子介绍了 swift-testing 的接入和用法，可以看到跟 XCTest 对比提供了更简洁的语法，更好的 async 支持以及更加清晰的诊断信息。

### [百度 APP iOS 端包体积 50M 优化实践(七)编译器优化](https://mp.weixin.qq.com/s/fmiccOgRx9_wopX9QmZiEA)

[@JonyFang](https://github.com/JonyFang): 本文介绍了百度 APP iOS 端包体积优化的编译器优化方案。涉及到的点有：GCC 语言编译优化、Swift 编译优化、LTO 优化、剥离调试符号、剥离符号表、剔除未引用代码、Asset 优化、C++ 虚函数优化、三方 SDK 编译器方向瘦身、指令集架构优化、Xcode 升级优化、Swift 内置动态库优化等。

## 工具

### [SwiftBar](https://github.com/swiftbar/SwiftBar)

[@xuyafei86](https://github.com/xiaofei86)：SwiftBar 是一款使用 Swift 编写，用来在 MacOS 菜单栏上展示自定义功能的开源工具。可以使用 Homebrew 安装，只需编写一个 Shell 脚本并将其添加到 SwiftBar 即可使用。你还可以从其插件仓库安装别人编写的脚本，比如展示 CPU 和内存占用、处理文本等。

## 设计

### 🐎 [Ensure Visual Accessibility: Glyphs, Icons and Shapes](https://www.createwithswift.com/ensure-visual-accessibility-glyphs-icons-and-symbols/)

[@水水](https://www.xuyanlan.com/)：了解如何正确使用应用程序 UI 上的视觉元素，同时保持其可访问性，包括字形、图标和形状，这些是传达信息、指导我们行动和塑造我们感知的基础。在苹果生态系统中鼓励正确的使用象形文字以及其组合来设计你的视觉元素，需要保证其具有清晰、一致性并且支持辅助功能标签。这篇文章还给了很多相关设计上的具体建议，感兴趣的可以参考。

## 音视频

### 🐢 [SwiftUI + Metal – Create special effects by building your own shaders](https://www.youtube.com/watch?v=EgzWwgRpUuw)

[@Cooper Chen](https://github.com/cjlcooper)：视频介绍了基于 SwiftUI + Metal 的形式，通过构建自己的着色器来创建特殊效果，包括如何重新着色、如何实现动画渐变、如何进行形状转换等内容，对于从 c++ 过渡到 SwiftUI 开发 Metal 相关内容的开发者有着很好的参考价值。

## 内推

重新开始更新「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）
