# 老司机 iOS 周报 #218 | 2022-09-26

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

## 文章

### 🐕 [中心化决议管理——云端分析](https://mp.weixin.qq.com/s/BcX73VpSBxAgjOwoKaEoEw)

[@JonyFang](https://github.com/JonyFang)：本文主要分享了目前字节跳动内部的一种 CocoaPods 云端化的优化方案，针对大量重复的 iOS 工程流水线构建任务进行了收敛和复用，在保证依赖决议正确性的前提下加速了依赖管理速率，提升了研发效能。目前云端分析服务已经完成第一阶段的开发并落地使用，已被内部几个核心的生产线使用。

内容结构：
1. 背景
2. 什么是云端依赖分析
3. 如何加速决议
	- 制品库（全量组件索引信息）
	- 缓存机制（排序 Version 缓存、Spec 对象缓存、缓存复用）
	- 物料剪枝
	- 决议策略兼容

### 🐎 [How to use UIViewController in SwiftUI](https://sarunw.com/posts/uiviewcontroller-in-swiftui/)

[@Damien](https://github.com/ZengyiMa)：在 iOS 开发中，SwiftUI 和 UIKit 将会长期共存，无论使用的是哪种框架，有时你都可能需要相互调用，幸运的是，Apple 可以轻松地将 UIKit 代码引入 SwiftUI 中使用，在本文中，作者将向你展示如何在 SwiftUI 使用 UIViewController。有兴趣的读者不妨一读。

### 🐎 [viewDidLoad() in SwiftUI](https://sarunw.com/posts/swiftui-viewdidload/)

[@zvving](https://github.com/zvving)：从 UIKit 来到 SwiftUI 世界，你可能会困惑：`viewDidLoad()`在 SwiftUI 下的等效方法是什么？

在声明式视图框架体系下，苹果并没有提供 `load view` 的行为细节回调。在绝大多数场景，可以通过 `onAppear()` 模拟 `viewDidLoad()` 的近似方法。本文详细介绍了模拟过程，以及如何封装成 `view modifier` 方便使用。

### 🐕 [云音乐 iOS 启动性能优化「开荒篇」](https://mp.weixin.qq.com/s/XVd9QNvXgJx_9K3XHAcaSA) 

[@Smallfly](https://github.com/iostalks)：启动速度是 App 的「门面」，影响用户第一使用体验，是非常重要的体验优化项。本文记录了云音乐 App 在 iOS 13 之后冷启动优化实践。

以 `main()` 函数作为分界点，分别从 T1 和 T2 两个阶段进行针对性的优化。T1 阶段的治理主要包括动态库治理、+load 方法、无用代码清理、二进制重排；T2 阶段的治理主要是高频 OC 方法、runtime 符号遍历、网络相关、系统接口、业务影响等等。

经过阶段性的启动性能专项优化，云音乐 App 启动性能提升了 30%+。

### 🌟 🐕 [大终端领域的新物种-KUN](https://mp.weixin.qq.com/s/tDDI9Wn5eUTOJKHxYL27xg)

[@CrazyCoderShi](https://github.com/CrazyCoderShi)：Flutter 动态化的尝试和建设在社区从未停止过，今年来各种方案层出不穷: AST 解析，JS Engine+，Lua VM 等，各有千秋；KUN 是咸鱼团队基于 Kraken 产出的一套夸多端的 Flutter 动态化方案，兼顾 iOS & Android 动态化的同时，对齐 W3C 标准做到 Web 端兼容，其整体方案的思路值得深入学习和借鉴，暂时并未开源。

## 音视频

### 🐎 🚧 [Dynamic Island Animation explained](https://twitter.com/BradEllis/status/1570892167807377409?s=20&t=T38Q6Acu_TAqOGhWbmQE0A)

[@ChengzhiHuang](https://github.com/ChengzhiHuang)：你是否很好奇灵动岛的动画是如何设计出来的，作者通过将两个圆叠在一起，先模糊（blur）再锐化（sharpen），得到蒙层，复现了同样的动效。

## 摸鱼周报

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

* 本期话题：使用 iOS 16.1 Beta 版和 Xcode 14.1 Beta 版，准备登陆灵动岛
* 本周学习：了解符号 Symbol 
* 内容推荐：Swift、SwiftUI 相关好文推荐
* 摸一下鱼：iOS 16 锁屏组件以及几个有趣的小工具：emojimix、hexclock、能不能好好说话

## 关注我们

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