# 老司机 iOS 周报 #154 | 2021-04-06

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

## 新闻

### [WWDC21 再度采用完全在线形式](https://developer.apple.com/wwdc21/)

[@Parsifal](https://github.com/ParsifalC)：第三十二届全球开发者大会 WWDC 将于 6 月 7 日至 11 日举行，并再度采用完全在线形式。届时将有 iOS 15、iPadOS 15、watchOS 8、macOS 11、tvOS 15 等系统将正式推出。

## 文章

### 🌟 🐕 [Flutter Boost3.0 初探](https://mp.weixin.qq.com/s/49h8FVPhnJSHo2brR0K9zw)

[@CrazyCoderShi](https://github.com/CrazyCoderShi)：flutter_boost 几乎已经成为混合开发下的标配三方组件，由闲鱼出品，本次 flutter_boost 进行了 3.0 版本的升级更新，解决了很多诟病已久的问题，比如：需要频繁更新跟进官方版本，AndroidX 和 Support 在不同分支，iOS 和 Android 接口不对齐等问题.

### 🌟 🐕 [Concurrency Done Right](https://kean.blog/post/concurrency)

[@四娘](https://kemchenj.github.io)：Concurrency 相关的功能提上日程之后，社区里关于如何编写并发代码的讨论也开始变多，在这篇文章里 [Nuke](https://github.com/kean/Nuke) 的作者 Kean 就介绍了他在 Nuke 里做的优化，他分析了不同场景下最佳的方案，包括 lock，atomic，actor 等等，推荐阅读。

另外 [NetNewWire](https://netnewswire.com) 的作者也写了一篇 [How NetNewsWire Handles Threading](https://inessential.com/2021/03/20/how_netnewswire_handles_threading)。

### 🐕 [SwiftUI 中的 Text 插值和本地化](https://onevcat.com/2021/03/swiftui-text-1/)

[@zvving](https://github.com/zvving)：SwiftUI 致力于提供简洁灵活的视图描述方式。拿最『简单』的例子`Text("I am \(someUser.name)")` 来说，你是否好奇：为 Text 设定内容的同时，如何支持本地化，以及各种更复杂的业务场景？
喵神也有同样的疑问，并带来抽丝剥茧两篇文章：详细拆解 SwiftUI 中本地化&文本差值的实现方式。不妨细读，帮助你写出知其所以然的 Swift 代码。

### 🐕 [听说你想写个渲染引擎](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485069&idx=1&sn=693e48ede7d796e14620fbbeaee56beb&chksm=cf558945f822005377aab06e3d42ffbf7d79f6a818b319a953e7f44ed7d4d79b5dffb66c8019&token=911515468&lang=zh_CN#rd)

[@xiaofei86](https://github.com/xiaofei86)：讲述浏览器渲染引擎工作原理的系列文章，使用 Swift 实现引擎。根据渲染引擎的工作流程，分为 “HTML 解析”、“CSS 解析”、“生成样式树”、“生成布局树”、“绘制” 5 篇内容。目前已更新“[前言](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485069&idx=1&sn=693e48ede7d796e14620fbbeaee56beb&chksm=cf558945f822005377aab06e3d42ffbf7d79f6a818b319a953e7f44ed7d4d79b5dffb66c8019&token=911515468&lang=zh_CN#rd)”和“[HTML 解析](https://mp.weixin.qq.com/s?__biz=Mzg4MjU2Mzc1MQ==&mid=2247485069&idx=2&sn=986f6eb0a7bece1d4e70253c3c9b7020&chksm=cf558945f8220053a6f15f658bcc2e442ee238c5639837076a85b2ceb6f7f6d104e4fbebc464&cur_album_id=1717440219009892354&scene=189#rd)” 2 篇，感兴趣的读者可以持续关注。

### 🐕 [How I Created a DSL for Diffable Section Snapshot using Result Builders](https://swiftsenpai.com/swift/section-snapshot-builder/)

[@Damien](https://github.com/ZengyiMa)：在日常开发中，我们在使用 UITableView 和 UICollectionView 的时候会写很多的模版代码，能否提高我们的开发效率呢？本文提供了一个新的思路，通过自定义 DSL 的方式来构建我们的 UITableView 和 UICollectionView 的页面结构，使得我们的开发效率可以得到大幅的提高，想了解实现思路？一起来看文章内容吧！

### 🐕 [Xcode-Tips](https://github.com/Xcode-Tips/xcode-tips.github.io)

[@老峰](https://github.com/gesantung)：Apple 开发者通常通过 Twitter 或微博等在社区中分享 Xcode 使用技巧，该项目的目标是将所有这些 Xcode 技巧放在一个地方，并使任何人都可以轻松获取或做出贡献。这些使用技巧包括如下几个方面：
- Breakpoints：使用断点作为书签、快速切换断点、断点播放声音、使用 LLDB 表达式自动执行用户操作
- Build Times：签名提速、复制 framework headers
- Code：生成类初始化、选中整个代码块
- Crashes：查看 .crash 文件
- Interface Builder：Xcode Interface 技巧
- Keyboard Shortcuts：跳到指定一行、格式化代码、增加注释等

还有更多内容可以阅读原文，本项目持续更新，感兴趣的读者可以持续关注。

### 🐕 [Unsafe memory pointers in Swift](https://theswiftdev.com/unsafe-memory-pointers-in-swift/)

[@zvving](https://github.com/zvving)：内存安全是 Swift 的特性之一，它意味着开发者只需关注内存所有者关系而不必在意具体的内存地址和存储细节。

在另一些场景，比如 Swift 与 C 互操作，则可以通过一系列 Unsafe API，达成对特定内存的操作能力。就像其名称一样，它不安全，稍有不慎就会崩溃，但也带来更多的底层能力：读写类型化指针内容，借助 Memory Layout 操作原始指针，以及绕过 ARC 手动管理内存等。通过这篇文章，你可以对 Unsafe API 有整体的认知。

## 代码

### [swiftui-animation-library](https://github.com/amosgyamfi/swiftui-animation-library)

[@Damien](https://github.com/ZengyiMa)：swiftui-animation-library 是一款 SwiftUI 动画库，包括加载/进度，循环，开关，退出，淡入淡出，旋转和背景动画，可以让你可以在下一个 iOS 应用程序或项目中直接实现这些动画。该库还包含大量弹性动画示例，例如惯性弹跳，摇动，旋转，果冻，橡皮筋等。

### [FuzzyFind](https://github.com/truizlop/FuzzyFind)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：FuzzyFind 是一个 Swift 软件包，它使用 Smith-Waterman 算法的修改版来执行模糊搜索。该软件包包括两个核心功能：bestMatch 和 fuzzyFind，使用 bestMatch，您可以在单个字符串中找到查询的最佳对齐方式，使用 fuzzyFind，您可以对多个输入运行多个查询，并获得与所有提供的查询匹配的输入的所有对齐方式。

## 赞助者

虚位以待..

**非常感谢以上赞助者的支持，如果你也有赞助我们的兴趣，欢迎添加微信 iTDriverr 哦~**

## 内推

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

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

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

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

## 关注我们

我们开通了公众号，每期发布时公众号（LSJCoding）会推送消息，欢迎关注。

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