# 老司机 iOS 周报 #256 | 2023-08-14

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/256.png?raw=true)
老司机 iOS 周报，只为你呈现有价值的信息。

你也可以为这个项目出一份力，如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们，我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。

## 新闻

### [TestFlight Update Xcode 15 beta 6](https://developer.apple.com/news/releases/?id=08022023a)

目前已经可以使用 Xcode 15 Beta 6 打包的 APP 上传 TestFlight 收集用户对一些新特性的反馈了，比较重要的例如 敏感内容检测(SCSensitivityAnalyzer) 等。

同时部分隐私收集的选项，如 Write-only 的日历权限申请，笔者亲测会被审核员要求提供使用的路径说明，可以提前准备好并提供录屏说明使用的必要性。

隐私相关内容可以查看 [WWDC23 10053 - What's new in privacy](https://xiaozhuanlan.com/topic/9504861273) 。

## [《WWDC23 内参》](https://xiaozhuanlan.com/wwdc23)

本周我们又更新了 3 篇内参，每篇质量都非常高，欢迎大家阅读。

> 关注老司机技术公众号，回复「2023」，领取 2023 及往年内参

### [WWDC23 10187, 10195, 10189, 10196 - SwiftData 全知道](https://xiaozhuanlan.com/topic/4937125086)

[@kukushi](https://kukushi.github.io/)：SwiftData 是什么？SwiftUI 中要如何使用 SwiftData？SwiftData 能和 Core Data 能一起使用吗？诸多困惑，本文将逐一解答。

### [WWDC23 10103 - 探索 App Intents 的功能更新](https://xiaozhuanlan.com/topic/9860547123)

王守楷、刘欢：本文主要是探索 App Intents 在 iOS17 中带来的新特性。包含以下三部分内容：Widgets 交互性和配置的新体验；对开发者体验改进。包含框架支持，以及对静态提取的增强；Shortcuts 与 App Intents 集成的更新。

### [WWDC23 10142 - 探索应用内购测试](https://xiaozhuanlan.com/topic/5180246739)

Lin：主要简要介绍内购测试的三种方式，帮助你了解每种方式的适用场景和今年引入的新功能。

## 文章

### 🌟 🐕 [深入理解 Observation - 原理，back porting 和性能](https://onevcat.com/2023/08/observation-framework/)

[@zvving](https://github.com/zvving)：在 WWDC23 上，Apple 发布了新的 Observation 框架，该框架旨在重塑和优化 SwiftUI 的数据流更新机制，简化概念和应用方式，提供更细粒度的控制，并对性能进行优化。然而，需要注意的是，这些新特性只能在 iOS 17 或更高版本上使用，并且随着这些改变，可能会带来一些重大的调整，同时也需要投入一定的学习成本。

这篇文章深入地分析了 Observation 框架的实现原理，探讨了其设计思想和性能特性，并与 KVO 和 Combine 的使用场景进行了对比。此外，文章还介绍了一个易于与当前项目兼容，对未来迁移友好的框架 —— ObservationBP。全文内容详尽并富有洞见，对于想要深入理解和掌握最新 SwiftUI 状态管理的开发者来说，堪称必读之作。

### 🌟 🐢 [移动端性能挖掘：字节跳动 iOS 与安卓性能归因实践](https://mp.weixin.qq.com/s/12Co7Tbvw2PmIZPqFlxaHA)

[@Leo](https://github.com/leomobiledeveloper)：性能领域是移动端的几个有难度的方向之一，归因又是解决性能问题的最关键的一环，本文详细详解了字节在归因工具方面的实践，推荐阅读。主要包含了三部分内容：

* 线下工具的发展史、目标和痛点
* 各种常见的性能问题的解决思路
* iOS 归因工具实现的底层原理

### 🐕 [Dependencies as a Package Author](https://www.massicotte.org/package-author-dependencies)

[@Barney](https://github.com/BarneyZhaoooo)：文章主要表述了针对转移性依赖问题，开源项目作者可通过下列三种策略来高效调整项目依赖结构：

1. 引入协议（Protocol）：提取一个协议，并让客户定义它如何运行。
2. 使用函数（Function）：用单个函数代替协议进行依赖处理。
3. 直接依赖（Plain Dependency）：让用户通过其他包或直接使用方法来实现某项功能。

### 🐕 [数据序列化工具 Protobuf 编码 & 避坑指南](https://mp.weixin.qq.com/s/xH9v4Al3B2vPbZIp2yqZpQ)
[@Smallfly](https://github.com/iostalks)：Protocol Buffers 是 Google 开发的一种数据序列化协议，相比 XML 和 JSON 它具有更好的性能和向后兼容性，可以清晰的定义数据结构，以文件的形式呈现方便管理和维护。这篇文章分析了 Protobuf 的优缺点，并介绍了它的编码原理，为了减少数字的存储空间，采用了 Varints 和 ZigZag 编码。在文章的最后作者还总结了一些使用 Protobuf 的最佳实践。

### 🐎 [GitHub embraces Swift and provides code analysis, security alerts and dependency updates for Swift projects](https://blog.eidinger.info/github-embraces-swift-and-provides-code-analysis-security-alerts-and-dependency-updates-for-swift-projects)

[@kemchenj](https://kemchenj.github.io/)：之前周报介绍了[ GitHub 里的代码扫描功能给 Swift 项目增加了支持](https://github.com/SwiftOldDriver/iOS-Weekly/blob/a6da79a0300d5d99b2a270819f88f6be6ddf1785/Reports/2023/%23250-2023.07.03.md#github-的-dependency-graph-dependabot-alerts-和-advisory-database-现在正式提供-swift-的支持)，这篇文章又补充了一些实操的例子，感兴趣的同学可以看看。

## 内推

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

[上海] - 完美世界 电竞 - iOS

[北京 / 杭州] - 抖音投屏 - Android/iOS

[北京] - 百度网盘 iOS/Android/FE/Server 研发工程师

[深圳 / 广州 / 北京 / 三亚] 字节跳动 - 剪映 - 招聘客户端开发

具体信息请移步：https://www.yuque.com/iosalliance/article/bhutav 进行查看（如有招聘需求请联系 iTDriverr）

## 关注我们

我们是「老司机技术周报」，一个持续追求精品 iOS 内容的技术公众号，欢迎关注。

**关注有礼，关注【老司机技术周报】，回复「2023」，领取 2023 及往年内参**

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