# 老司机 iOS 周报 #203 | 2022-05-23

![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) 提出。

## 新闻

### [《WWDC22 内参》作者招募 &《WWDC21 内参》免费领取](https://mp.weixin.qq.com/s/W-15I-lTAPKzI6USw3nuuQ)

《WWDC22 内参》作者招募工作正式开始，请感兴趣的朋友点击上方链接参与报名，报名截止时间为 5 月 30 号。

去年我们第一次公开招募了一些新的同学参与进来，同时也引入了审核机制，最终交付了一份还算满意的答卷。103 篇文章、2810 份订阅、几十万的阅读量，这些数据都要比往年要好，非常感谢大家对老司机技术的支持和信任。**《WWDC21 内参》也已经可以免费领取，在老司机技术周报公众号中回复「2022」即可获取链接。**

##  Developer - 设计开发加速器

### [设计高效的 UI 测试](https://developer.apple.com/cn/accelerator/)

2022 年 5 月 31 日（报名截止 5 月 16 日）

了解如何设计测试，来帮助你发现和诊断最棘手的漏洞。我们将解释如何使用 XCTest 改进您的自动化测试，以找到代码中的隐忧，以及如何准备测试以应对失败。从而更轻松地对问题进行分类，以便您可以快速解决问题，并修复错误。理解中断，学习如何预测 App 的潜在中断、创建智能测试以识别它们。通过使用 UI 中断处理，构建更好的测试，管理预期的警报。

![156925166-f0e9ae02-0d06-4806-aa19-e84d84e2fd1f](https://user-images.githubusercontent.com/11873526/162620205-0cddfae9-05e0-4e10-9359-4d914e3ae08b.jpeg)

## 文章

### [Dutter | 钉钉 Flutter 跨四端方案设计与技术实践](https://mp.weixin.qq.com/s/JyfwrfsWplHhkColYLhBpg?from=singlemessage&isappinstalled=0&scene=1&clicktime=1652443237&enterid=1652443237)

[@老峰](https://github.com/gesantung)：Dutter 即 DingTalk Flutter，是钉钉内基于 Flutter 构建的跨四端研发框架，本文主要包含以下内容：
- 整体架构： Dutter Runtime、Dutter Dev Kit、Dutter OPS Kit；
- 数据通信包括：Channel、Dutter FFI；
- 消息总线；
- 模块化；
- 容器化；
- 组件库：dingui_flutter 、dingtalk_uikit；
- 最佳实践以及部分 FlutterEngine 层面的问题定位等。

### 🐕 [Scripting in Swift: Git Hooks](https://www.polpiella.dev/scripting-in-swift-git-hooks)

[@享耳先森](https://github.com/iblacksun)：Swift 除了用于 App 还可以干什么？本文作者使用 Git Hooks 结合 Swift `Command Line Tool` 解决真实工作场景中遇到的问题，如果你也有类似需求又不熟悉其他脚本语言，Swift 是很好的解决方案。

### 🐕 [京东 App MCube 动态化实践](https://mp.weixin.qq.com/s/kjYRo2OcmWCoUBTdsAKrCw)

[xuyafei](https://github.com/xiaofei86)：在京东 App 业务高速发展的过程中，为了使更快的需求响应速度与研发人力和稳定性需求之间达到平衡，京东自研了一套原生的“动态化+跨端”框架 MCube。本文对其方案进行了简单介绍，其通过三方库 Yoga 作为其布局引擎；通过 XML 作为 DSL 描述原生控件；通过协议层对接各个可插拔组件。另外还有其容器分层架构的设计、配套管理平台和开发套件等介绍，感兴趣的同学可以阅读原文了解。

## 代码

### [Euclid: a Swift library for creating and manipulating 3D geometry](https://github.com/nicklockwood/Euclid#example)

[@莲叔](https://aaaron7.github.io)：这是一个能让你非常方便创建和操作各种基础3D模型的代码库，并且可以非常方便的和 SceneKit 相关的场景进行整合。传统的方法中，要创建三维模型然后添加贴图，往往都需要编写上百行 OpenGLES 的代码才能实现，而通过 Euclid，创建模型就如同创建一个普通的 View 那样简单，感兴趣的朋友可以看一下作者开发的一个 macOS App：[ShapeScript](https://apps.apple.com/app/id1441135869)， 可以通过文本描述的方法创建三维模型，可以说这个开源的组件就是这个 App 的SDK版。应该有非常多有趣的功能可以实现。

### [Runestone](https://github.com/simonbs/Runestone)

Runestone 是一个高效易用的代码编辑器库，最大的亮点是：

- 使用原生技术实现，不需要依赖于 WebView
- 使用 TreeSitter 作为 Parser 后端，可以高效地进行增量解析，兼容大部分主流编程语言
- 借鉴了 AvalonEdit 的 Line Management

## 摸鱼周报

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

* 话题：远程工作正在成为趋势
* 面试模块：CRC 实践应用：理论推导
* 优秀博客：App Extension
* 学习资料：一个大学生的学习计划
* 开发工具：适用于 `macOS` 的现代媒体播放器，`IINA` 由开源媒体播放器 `mpv` 提供支持，几乎可以播放您拥有的所有媒体文件。

## 内推

老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。

如果你想**找工作**，点这里：https://www.yuque.com/iosalliance/article/bhutav

如果你想**招人**，点这里：https://www.yuque.com/iosalliance/article/ycyhf3

当然，也欢迎你关注我们每一期的周报，我们会在每期周报底部及时更新编辑内推岗位。

## 关注我们

我们是「老司机技术周报」，一个持续追求精品 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）
