# 老司机 iOS 周报 #241 | 2023-04-17

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

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

## 新闻

### [Xcode 14.3: App built is not able to open on iOS 13.6](https://developer.apple.com/forums/thread/727680?login=true)

苹果论坛有开发者反馈 Xcode 14.3 打出的包无法在 iOS 13 的部分系统上启动，报错在 [dyld3/Loading.cpp](https://opensource.apple.com/source/dyld/dyld-750.5/dyld3/Loading.cpp) 中：``Termination Description: DYLD, Assertion failed: (gotLocation), function applyFixupsToImage_block_invoke_3``，对于还需要兼容 iOS 13 的同学，此次 Xcode 的升级可以再稍微观望一段时间。

## 文章

### 🌟 🐎 [一些关于开发的杂谈话题 - 测试](https://onevcat.com/2023/04/dev-talk-testing/)

[@JonyFang](https://github.com/jonyfang): 介绍了开发人员如何在编写代码时进行测试，以及测试对于软件质量和开发速度的重要性。首先解释了测试的概念和种类，然后详细讨论了单元测试和集成测试的区别以及如何运用它们来确保代码质量。接着，强调了测试的益处，例如避免代码回归、提高代码可读性和可维护性等。最后，分享了一些实用的测试工具和技巧，包括测试覆盖率、断言、模拟和持续集成等。整篇文章对于想要提高代码质量的开发人员来说是一篇很好的参考资料。整体内容结构：

1. 为什么要写测试？你会给项目和代码写测试吗？
	- 测试些什么
	- 不测试什么
2. 测试的风格和测试框架
	- BDD, TDD 或者随心所欲？
	- 关于 AI 在测试中的应用
	- Apple 平台的测试，XCTest 和其他框架
	- Unit Test、Feature Test 和 UI Test
3. 改善测试质量的方式
	- 注入、Mock 和 Stub
	- 使用纯函数

### 🐕 [当我们说插件系统的时候，我们在说什么](https://mp.weixin.qq.com/s/mp4WL6Z2ESQTbK_B7ba8Fg)
[@kyo](https://github.com/KyoLi)：本文其实属于前端的文章，文中所说的插件系统并非安卓的插件化，可以理解为类似于我们常说的组件化。当我们看到类似的名词，插件、组件、模块等等，他们都是对软件系统职责的划分，以达到降低工程复杂度，提高可维护性的目的。而我们常说的软件架构，其核心就是如何拆解、增加组件，所以，不要觉得这些名词很高深，其实都是系统架构本质要做的事情。

### 🐎 [macOS Network Metrics Using sysctl](https://milen.me/writings/macos-network-metrics-sysctl-net-rt-iflist2/)：

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：在 macOS 上如果观察系统的网络吞吐量，可以使用 sysctl() with NET_RT_IFLIST2：这提供了对 64 位指标的访问，它不会受到旧 API 的 32 位字段溢出的影响，获取的指标也不会受到截断的影响。

### 🐎 [iOS ReplayKit 与 屏幕录制](https://mp.weixin.qq.com/s/NbT1BE0CmYkyMXeVIekCpQ)

[@Smallfly](https://github.com/iostalks)：ReplayKit 是 iOS 系统提供的屏幕录制框架，随着系统的迭代，从最初只支持应用内录制到系统屏幕录制，再到 Loop Buffer 滚动剪辑，功能在不断地增加。本文介绍了云音乐 LOOK 直播录屏场景的实践，主要包括 Extension 和宿主 App 功能，以及两者之间的通信。此外，还介绍了如何在录屏过程中保护用户隐私，以及解决 Extension 50 M 内存限制的挑战。

### 🐎 [【开源推荐】 macOS 上的 ProcMon：Red Canary Mac Monitor](https://mp.weixin.qq.com/s/16SQfbl7YuHjumkKXDXtyA)

[@Cooper Chen](https://github.com/cjlcooper)：熟悉 Window 桌面开发的开发者对于 SysInternals Suite 都不会陌生，这是一款用于研究漏洞挖掘还是红蓝对抗的工具软件，多年以来 macOS 一直鲜有与之能对标的软件，而今天介绍的是来自安全公司 Red Canary, Inc. 的 Red Canary Mac Monitor，功能上类似 Windows 的 SysMon，基于系统的 Endpoint Security 框架，可以记录文件读写、进程创建等事件，这为 Mac 开发同学有很好的参考价值。

### 🐎 [The Power Of Plist](https://redsweater.com/blog/2083/the-power-of-plist)

[@J_Knight_](https://github.com/knightsj)：本文介绍了 plist 的一些功能，如控制产品应该在哪些操作系统上运行（对应的 key 是 LSMinimumSystemVersion），而且还允许开发人员为特定操作系统考虑应用程序的哪些架构（对应的 key 是 LSArchitecturePriority）。另外还介绍了 plist 嵌入到应用的二进制文件的机制。

### 🐎 [When Matched Geometry Effect Doesn't Work](https://chris.eidhof.nl/post/matched-geometry-effect/)

[@AidenRao](https://weibo.com/AidenRao)：这篇文章介绍了如何使用 SwiftUI 中的 matchedGeometryEffect，在不同视图之间进行转换时，使它们的位置、大小和形状都流畅过渡。

## 工具

### [OrbStack](https://orbstack.dev/)

[@邦 Ben](https://weibo.com/linwenbang)：OrbStack 是一个可以在 macOS 上快速运行 Docker 容器和 Linux 虚拟机的工具，资源占用率低，高带宽，速度快。它主要有两个作用：替代 Docker Desktop、替代 Linux 虚拟机。官网所示，数据对比 Docker Desktop 在启动速度，CPU，Network，Memory 都有显著的数据提升。有需要的同学可以尝试一下，目前免费。

- 详细见：https://orbstack.dev/

## 代码

### [lexical-ios](https://github.com/facebook/lexical-ios)
[@kyo](https://github.com/KyoLi)：Meta 最近开源了一个富文本编辑器，该编辑器依然是采用 JS 的方案。相比于其他的富文本编辑器，lexical-ios 具有轻量、高可扩展性的优点，它将编辑器的 UI 面板、工具栏、以及 markdown 等能力封装为类似于组件的形式，方便调用者自由扩展。具体的使用方式可以参考官方的文档 [Lexical Documents](https://facebook.github.io/lexical-ios/documentation/lexical/)。

## 摸鱼周报

[@摸鱼周报 #90](https://mp.weixin.qq.com/s/Bx8N9HqMP5HE9mzy6l3QVA)：第 90 期摸鱼周报来了，一起来看下本期概要：

* 本期话题：4 月 25 日起必须使用 Xcode 14.1 构建提交 App
* 内容推荐：推荐近期的一些优秀博文，涵盖：自定义 Swift Toolchain、软件测试、AI 应用、Dark Sky 设计经验等方面的内容。
* 摸一下鱼：面向任务的 GPT 项目 Auto-GPT；把 GPT 模型融于模拟角色；把 AI 融于设计流程；Xcode 版本的 Copilot 插件

## 内推

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

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

## 关注我们

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

**关注有礼，关注【老司机技术周报】，回复「2021」，领取 2017/2018/2019/2020 内参**

![](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）
