# 老司机 iOS 周报 #288 | 2024-05-13

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

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

## 新闻

### [AppStore Connect 提交失败 Workaround](https://github.com/SwiftOldDriver/iOS-Weekly/issues/4537)

上周陆续有读者在老司机的 App Review 群中反馈提交审核时遇到了奇怪的问题，也有群友提供了解决方案，我们再次汇总如下：

1. 当遇到 **2.0.0 二进制文件无效** 的问题，可以等待一会，换一个小版本号重新上传，可以解决。
2. 当遇到 **无法添加以供审核** 的问题，需要在 ICP 备案的输入框中在正常输入备案号后，再额外增加一个空格。即可进行后续流程。

![](https://github.com/SwiftOldDriver/iOS-Weekly/assets/20059859/7585173a-d8ed-431b-b4e5-2b195b0d3350)
![](https://github.com/SwiftOldDriver/iOS-Weekly/assets/20059859/2a8fb6a0-8706-42b3-982a-d7615cb79f44)


## 新手推荐

### 🌟 [戴铭的 Swift 小册子](https://github.com/ming1016/SwiftPamphletApp)

[@AidenRao](https://weibo.com/AidenRao): 小册子是一个使用 Swift、按照声明式 UI 和响应式编程范式开发的开源 macOS 程序，上面的内容主要面向 Swift 零基础的同学，包括 Swift 的知识点、直接可用的小例子和知识点相关的其它资料，推荐 Swift 新手及感兴趣的同学学习使用。

###  [Safely unwrap optional values in SwiftUI bindings](https://www.polpiella.dev/safely-unwrap-optional-value-in-swiftui-binding/)

[@zoeGuo](https://github.com/zoeGuo)：在 SwiftUI 中 , `$` 符号用于创建一个绑定到可观察对象的引用。但一个可选对象用 `$` 后得到的是一个不可选的对象。那么在这种场景下可以使用 `Binding` 将对象包装，`Binding` 的初始化方法 `init?(_ base: Binding<Value?>)` 会解包绑定的可选值，并提供一个非可选值，这样就又可以对原来的可选值进行安全解包了。文章中有简洁明了的代码示例，感兴趣的读者可以阅读原文。

## 文章

### 🐎 [iOS 依赖库版本一致性检测：确保应用兼容性](https://juejin.cn/post/7358011504967925812)

[@BluesJiang](https://github.com/BluesJiang)：本篇主要介绍了一种检测系统库最低版本依赖的方法。核心的思路使用 `otool` 获取依赖的系统库，然后调用苹果的接口来查询系统库支持的最低系统版本。用来解决 App 意外错误引入高于 App 最低支持系统版本的系统库，导致 App 启动崩溃的问题。

### 🐎 [淘系两年半 A/B 实验经历，聊聊我理解的“科学实验”](https://mp.weixin.qq.com/s/-durED9M0UMqhT0i2S67lQ)

[@Smallfly](https://github.com/iostalks)：这篇文章主要讲述了作者在淘系两年半的 A/B 实验经历，包括在货架电商和内容电商两个领域的 A/B 实验能力建设。文章中，作者分享了对科学实验的理解和实践，文章中提到了几个关键点：
1. **业务目标科学**：增长目标应该是长期健康、可量化验证的。
2. **实验设计科学**：在常规实验中，样本组的同质性和样本间的独立性是重要的考虑因素。
3. **实验数据可用**：强调了 AA 检验的重要性，以确保实验数据的可用性。
4. **实验分析科学**：在获得可用的数据基础上，关注实验分析的问题，包括确定需要观察的指标和维度，以及如何处理低响应实验。

### 🐎 [彻底弄懂 Linux 下的文件描述符（fd）](https://yushuaige.github.io/2020/08/14/%E5%BD%BB%E5%BA%95%E5%BC%84%E6%87%82%20Linux%20%E4%B8%8B%E7%9A%84%E6%96%87%E4%BB%B6%E6%8F%8F%E8%BF%B0%E7%AC%A6%EF%BC%88fd%EF%BC%89/#1%E3%80%81%E4%BB%8E%E4%B8%80%E4%B8%AA%E6%9C%80%E5%B8%B8%E8%A7%81%E7%9A%84%E4%BE%8B%E5%AD%90%E8%AF%B4%E8%B5%B7/)

[@DylanYang](https://github.com/Dylan19Yang)：本文介绍了 Linux 下的文件描述符（file descriptor）。文件描述符是内核对已经被打开文件所创建的索引。内核维护了一张进程级别的文件描述符表，记录了每个文件描述符对应的文件指针，使得对这些文件进行 I/O 操作的系统调用都可以通过文件描述符来实现。同时系统还维护着系统级别的打开文件表和 i-node 表，这两张表内有关于打开文件更多的信息，包括偏移量、访问模式、权限等。文件描述符表指向打开文件表，打开文件表则又指向了 i-node 表。此外，本文也举例了通过 shell、C 语言、python 等方式打开文件后，文件描述符的实际表现。

### 🐎 [OS Style settings view](https://paulpeelen.com/SettingsView)

[@水水](https://xuyanlan.com/categories/iOS/)：如果您正苦恼于不知道怎么给 MacOS 应用添加一个符合 MacOS 风格的设置页面，那么本文给出了简单的代码示例教您如何去实现，敢兴趣的读者可以参考 ~

### 🐎 [Flutter 之 HTTP3/QUIC 和 Cronet 你了解过吗？](https://mp.weixin.qq.com/s/InAzeSa-2YeV2oo6gnykhg)

[@极速男孩](https://github.com/ztlyyznf001/)：本文介绍了 HTTP/3 和 QUIC 协议及其在 Flutter 中的应用，特别是通过 Cronet 库。HTTP/3 基于 QUIC 实现，优化了网络连接的稳定性和效率，支持连接迁移和加密。Cronet 作为 Chromium 的网络堆栈，支持 QUIC 和 TCP，可通过 Flutter 使用，增强移动应用的网络性能。文章还讨论了如何在 Flutter 项目中通过 cronet_http 包和 Dio 库集成 Cronet，利用其在 Android 上的优势，以及 iOS 上用 NativeAdapter 的来支持 HTTP/3。

## 播客

### 🐢 [SWIFT PACKAGE INDEXING EPISODE 43: Now I ’ m worried our metrics aren ’ t correct! with special guest Holly Borla](https://share.transistor.fm/s/2d4b1ba7)

[@Kyle-Ye](https://github.com/Kyle-Ye): 本期 SwiftPackageIndex 播客和特邀嘉宾苹果的 Swift 语言团队的负责人 Holly Borla 讨论了 Swift 6 的并发特性和语言模式迁移，Swift Package Index 中的 Swift 6 兼容性跟踪项目。同时介绍了一些与并发相关的提案（SE414 和 SE431）和 Swift 软件包。

## 工具

### [difftastic](https://difftastic.wilfred.me.uk/)

[@Crazy](https://github.com/jiyan135960)：difftastic 是一款专门针对文件对比的工具，这个工具不是简单的逐行对比，会根据语言以及运行环境进行分析，提供更便于阅读对比界面。该工具现在支持多种语言，移动端开发所用的 Swift、Java、Kotlin、Dart 都已经支持。

## 内推

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

具体信息请移步：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）
