# 老司机 iOS 周报 #213 | 2022-08-15

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

## 文章

### 🐎 How To Boost Your iOS Code Performance:[Reduce Searching In Array](https://betterprogramming.pub/how-to-boost-your-ios-code-performance-reduce-searching-an-array-55fbdfee2050) / [Reducing Collection Type Initialisation](https://betterprogramming.pub/how-to-boost-your-ios-code-performance-by-reducing-collection-type-initialisation-564bffee94a3)

[@Smallfly](https://github.com/iostalks)：这两篇文章介绍了一些提高编码性能的小技巧。在遍历数组时，要警惕多层循环，多思考是否可以利用 Set/Dictionary 降低复杂度。在循环体内尽量避免创建集合类型，特别需要关注值类型的 Copy-on-write。

### 🐕 [货拉拉 iOS 司机端线程治理总结](https://juejin.cn/post/7129391597967376415)

[@AidenRao](https://weibo.com/AidenRao)：文章主要介绍了货拉拉 iOS 司机端，在线程治理方面的实践。如：队列的管理和分配，高并发业务的梳理和重构，线程使用的合理性评估与改造，线程相关 crash 的排查和修复，长效机制的建立。

### 🐎 [Content transition in SwiftUI](https://swiftwithmajid.com/2022/08/02/content-transition-in-swiftui/)

[@Damien](https://github.com/ZengyiMa)：SwiftUI 框架从第一个版本就提供了视图转换功能。每当视图被移除或添加时，可以使用特定的动画来进行呈现。但是在视图内容发生变化时，SwiftUI 框架无法应用动画转换效果， SwiftUI 框架在最新迭代中为我们带来了内容转换的新特性。它允许我们在视图内容发生变化时应用特定的过渡动画，具体怎么做呢？对 SwiftUI 感兴趣的同学不妨一读。

### 🐢 [Shared with You implementation and testing explained](https://www.avanderlee.com/swift/shared-with-you/)

[@享耳先森](https://github.com/iblacksun)：WWDC 22 中苹果将原来仅 Apple 可用的 `Shared with you` 开放给所有开发者，本文详解了其工作机制和适配方式。

### 🐎 [Advances in Swift Package Manager's dependency access control](https://www.polpiella.dev/advances-in-swift-package-access-control/)

[@张嘉夫](https://github.com/josephchang10)：在最新的 Swift 5.7 development snapshot 中 `swift` 可执行文件新增了一个叫做 `--explicit-target-dependency-import-check` 的 flag，改进了 SPM 的依赖系统，允许开发者启用或禁用一个新的构建验证步骤，以检测未在 target 的依赖列表中明确定义的 import 语句，并相应触发 warning 或 error。作者在这篇文章中实际测试了这个新的 flag。

### 🐎 [MachO 代码签名剖析](https://juejin.cn/post/7017842746937311246)

[@kemchenj](https://juejin.cn/post/7017842746937311246)：验证代码的正确性是计算机科学中最难的问题之一，因为不存在普遍意义的正确的算法，所以这一验证通常使用数字签名处理。大家可以通过阅读本文思考代码来源是否合法和代码是否被修改过的验证是如何实现的。

### 🐎 [RTC 场景下的屏幕共享优化实践](https://mp.weixin.qq.com/s/tyD_y0xhCMEJg0tfTelHfA)

[@邦Ben](https://weibo.com/linwenbang)：该文章和 iOS 其实并没有直接关系，主要说在飞书上共享屏幕的情况下，如果进行一个策略的优化。通过算法进行识别当前屏幕的内容，然后进行分析自动切换到不同的模式。

1. 清晰模式：主打清晰度，尽量保持高分辨率（如：最高 4K 原画质），带宽或性能不足的时候，只降低帧率（如：从 30fps -> 5fps），不降低分辨率。

2. 流畅模式：主打流畅度，尽量提升帧率（如：最高 30fps），带宽或性能不足的时候，优先降低分辨率（如：从 4K -> 720p），最后才考虑降帧率。

手动切换是个基本的选择，但是通过自动化更佳。识别算法主要是：光流法，决策树，颜色直方图，方向统计。文章大体做了一些介绍，但是也比较属于入门概念介绍，有兴趣的同学可以了解一下。


## 工具

### 🐕 [Device List | AppleDB](https://appledb.dev/device-list.html)

[@Barney](https://github.com/BarneyZhaoooo)：**Device List** 可以方便地查询 Model、Name、Board、Soc 之间的对应关系。

## 摸鱼周报

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

* 本期话题：今年 8 月，把握与 App Store 专家会面交流的机会
* 本周学习：Swift 闭包中的变量捕获
* 内容推荐：程序开发文档及资源网站
* 摸一下鱼：一款体感识别空气投篮模拟器 App；To-D 杂志


## 关注我们

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