# 老司机 iOS 周报 #222 | 2022-11-07

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

**周报编辑组又来新人啦 ~ 欢迎陈家黎 (Cooper Chen) 加入周报组织。家黎目前专注在 Mac 桌面应用开发和架构设计，同时对编译器、链接器以及 CI/CD 等方向均有研究。希望家黎的加入也能为大家带来更多元化的内容输出！**

## 新闻

### [挑战上岛：适配实时活动和灵动岛](https://developer.apple.com/cn/accelerator/)

实时活动用于在 iPhone 锁屏以及灵动岛上显示来自 App 的最新信息，帮助用户及时查看当前任务和事件的进展。参与此次活动，开发者将了解如何设计和开发的实时活动，以及如何利用灵动岛带来更出色的用户体验。

参与讲座的开发团队可在讲座当天报名参与实时活动和灵动岛适配挑战，通过审核后可获得一对一的咨询与深度辅导。参加挑战，并能够在 2022 年 12 月 20 日前完成适配和上线的团队，将有机会获得更多 App 的推广机会。请在 2022 年 11 月 8 日前报名参加。

### [第二期字节跳动技术 iOS 技术沙龙正式开放报名](https://mp.weixin.qq.com/s/KTobjj9B8vuEYPIKggfeKA)

[@Barney](https://github.com/BarneyZhaoooo)：第二期字节跳动技术 iOS 技术沙龙正式开放报名了！
本期沙龙将围绕**静态分析**、**视频播放品质优化**、**首页 Feed 重构**、**自动化服务**及**端智能技术探索**等 5 大技术方向 , **11 月 12 日下午 2 点**沙龙将以免费线上直播的形式与大家见面。
以下是具体主题：

- **抖音 iOS 从静态分析到准入体系：进击的“钟馗”**
- **抖音 iOS 视频播放品质优化实践**
- **抖音 iOS 首页 Feed 重构探索与实践**
- **抖音 iOS 自动化服务：工具链演进与优化实践**
- **机器学习技术在抖音 iOS 的探索与实践**


## 文章

### 🐢 [自动化测试在美团外卖的实践与落地](https://mp.weixin.qq.com/s/vLR1FqGi6TiICEcWzOnHfQ)

[@EyreFree](https://github.com/EyreFree)：随着美团到家业务的发展，系统复杂度持续增长，外卖各个页面的技术形态也很多，除了 Native 代码，还包括 Mach（外卖自研动态化框架）、React Native、美团小程序、H5 等，研发人员一半时间在开发、一半时间在模拟环境和自测。因此引入自动化测试就显得十分有必要，本文介绍了美团外卖在自动化测试方向做的一些探索和实践，包括可溯源的自动化测试、跨 App 回放用例、埋点的录制回放等，推荐正在从事相关领域工作的同学阅读。

### 🐢 [Towards the next generation of XNU memory safety: kalloc_type](https://security.apple.com/blog/towards-the-next-generation-of-xnu-memory-safety/)

[@Damien](https://github.com/ZengyiMa)：内存安全漏洞是最常见，最广泛利用的漏洞问题，并且当今几乎所有流行的用户设备都依赖于用 C 和 C++ 等被认为 “内存不安全” 的编程语言编写的核心系统代码，本文来自 Apple 官方安全工程与架构团队文章，向大众展示了苹果在解决内存安全漏洞方面的努力，本文会从以下几个角度为我们完整的介绍了新的一代内存分配器 kalloc_type 

* 对安全问题的介绍，包括目标、设计原理和必须克服的挑战。
* kalloc_type 安全分配器的技术实现原理。
* 安全分析和评估，包括优势和劣势。

本文是安全问题的系列文章内容的第一篇，感兴趣的同学可以订阅 Apple 官方 Blog。

### 🐕 [深入理解 virtual 关键字](https://mp.weixin.qq.com/s/fvgU5iBP9_0yZOsX0no_Cg)

[@莲叔](http://aaaron7.github.io/)：virtual 是 C++ 最常用的一个关键字，绝大多数同学可能对于 virtual 的理解还停留在表面，认为是如果我们需要覆写父类的方法，则需要将对应的方法标记为 virtual。虽然这个习惯不能说不对，但本质还是一种盲人摸象。这篇文章深入浅出的介绍了 virtual 为什么可以为我们解决继承中遇到的问题，有无 virtual 在集成中的区别，以及最后还简要的介绍了 virtual 的实现原理，非常适合平时需要书写 C++ 的同学阅读，ROI 非常高（收获 / 阅读时间）。

### 🐎 [聊聊 iOS 中的像素对齐](https://juejin.cn/post/7124658703088910350)

[@Smallfly](https://github.com/iostalks)：像素对齐是 UI 开发中比较基础的概念，像素不对齐可能会出现视觉效果不符合预期，还会导致一些额外的性能损耗。本文采用通熟易懂的方式，介绍 iOS 系统中像素不对齐会产生的效果，以及在不同场景下像素对齐的处理方式。

### 🐕 [Resolver for iOS Dependency Injection](https://www.kodeco.com/22203552-resolver-for-ios-dependency-injection-getting-started)

[@JonyFang](https://github.com/JonyFang)：Resolver 是一个依赖注入 / 服务定位框架，它的核心逻辑是服务定位的设计实现。Resolver 的核心主要包含三个部分：`ResolverRegistration`、`ResolverScope`、`Resolver`，它们各有各的职责，遵循了职责单一的设计原则，并且实现了一个扩展性很强的策略模式。本文是 RAYWENDERLICH.COM 提供的一篇入门教程，可以根据实例 Demo 了解 Resolver 的使用。

### 🐕 [美团高性能终端实时日志系统建设实践](https://mp.weixin.qq.com/s/BAcB_LQ1Nr00Y7RxjRDK1g)

[@Cooper Chen](https://github.com/cjlcooper)：本文介绍了美团是如何从 0 到 1 搭建高性能终端实时日志系统 Logan，其服务于移动端 App、Web、小程序、IoT 等终端场景下的实时日志解决方案，旨在提供高扩展性、高性能、高可靠性的实时日志服务，包括日志采集、上传、加工、消费、投递、查询与分析等能力，其中落地成果如下：
- 核心链路还原
- 内测阶段排障
- 日志数据分析

希望能为大家带来一些帮助和启发。

### 🐕 [智能测试实践之路 - UI 遍历技术](https://mp.weixin.qq.com/s/wetQa8iiOnKySehtFpbPtQ)

[@老峰](https://github.com/gesantung)：UI 测试在大促断网演练、线上问题巡检、功能回归测试兜底、埋点覆盖、流水线质量门禁等许多场景下有重要作用，但传统 UI 遍历技术依赖 uiautomator 和 wda 框架获取页面 Dom 数据结构，在稳定性、性能、兼容性方面均有一定痛点，本文是京东结合传统 dump hierarchy 获取视图树和 openCV 页面分割两种技术手段在智能测试方向的探索实践，包含以下内容：

- 智能分割识别获取页面元素
- 利用图像视觉和 AI 识别处理遍历过程弹窗
- 利用图像 Hash 和分割轮廓特征标识页面
- 多端兼容的指定页面遍历方案
- 多种借力于 AI OCR CV 技术的断言方式

### 🐕 [iOS 灵动岛开发实践](https://juejin.cn/post/7153236337074634788)

[@水水](https://www.xuyanlan.com/): 本文作者通过电商常用的抢购商品案例出发，从基础概念、开发准备、项目构思、项目代码实践到最终结果展示的完整的描述了灵动岛的开发实践过程，是非常好的参考资料。如果对灵动岛开发有兴趣的朋友们可以了解看看哦 ~ 
关键词：
- Max 系统版本、编译器及 iOS 系统版本：>=MacOS12.4、>=Xcode14.0+beta4、>=iOS16.1+beta 
- ActivityKit
- SwiftUI
- Widget

### 🐕 [盒马 iOS Live Activity & “灵动岛”配送场景实践](https://mp.weixin.qq.com/s/6M3jaVwgTAaQ0A0Fsjcs1Q)

[@J_Knight_](https://github.com/knightsj)：盒马团队将灵动岛技术落地到了盒马 30 分钟配送的场景，作为第一批适配的应用，获得了 Apple Store Today 的推荐。本文首先分享业务落地效果，并结合整体的技术方案分享了在开发过程中遇到的技术难点（比如实时更新，机型适配，过渡动画等）以及解决方案。

### 🐎 [基于优酷业务特色的跨平台技术 | GaiaX 开源解读](https://mp.weixin.qq.com/s/2LW4qS2Sk4SV23pAE2xhuw)

[@xuyafei86](https://github.com/xiaofei86)：[GaiaX](https://github.com/alibaba/GaiaX) 跨端模板引擎是在阿里优酷、淘票票、大麦内广泛使用的 Native 动态化方案。其采用自定义 DSL 搭建 UI，Native 原生 UI 组件进行渲染的技术形态。使用 json 和 css 描述 UI 元素、数据绑定和动态扩展信息。GaiaX 还具备动态化能力，并提供相关的开发工具，感兴趣的同学可以关注此系列文章。

### 🐕 [Swift Package Manager 工程实践](https://mp.weixin.qq.com/s/q7jolU99K7FI9JvAxjwRwg)

[@AidenRao](https://weibo.com/AidenRao)：本文详细介绍狐友团队在引入 Swift Package Manager 进行工程实践中，探索和累积的相关知识和实践经验，从结构设计、资源处理、链接方式的选择、编译与链接参数设置、异常处理，这五个方面展开详细介绍，每个小部分结尾都提供了最佳实践的总结。希望能够帮助其他想要尝试 Swift Package Manager 的开发者顺利过渡。

> 由 [kingnight](https://github.com/kingnight) 推荐收录


## 摸鱼周报

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

* 本期话题：Apple Search Ads 新增广告位，遭遇质疑；macOS Ventura 初体验，更像 iOS，功能更强大。
* 本周学习：Swift 函数派发方式总结
* 内容推荐：网络监控内容推荐，iOS 博主在新西兰找工作的心路历程
* 摸一下鱼：多种脚本语言中优雅处理参数的三方库；原神助手 mac 版

## 内推

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

- [北京/杭州/上海] 抖音 - 西瓜视频 - iOS
- [上海/北京] 小红书 - 客户基础架构技术团队 - iOS - P6/P7/P8
- [北京] 字节跳动 - APM 客户端团队 - 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）
