Skip to content

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

Compare
Choose a tag to compare
@ChengzhiHuang ChengzhiHuang released this 13 May 02:29
· 72 commits to master since this release

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

AppStore Connect 提交失败 Workaround

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

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


新手推荐

🌟 戴铭的 Swift 小册子

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

Safely unwrap optional values in SwiftUI bindings

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

文章

🐎 iOS 依赖库版本一致性检测:确保应用兼容性

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

🐎 淘系两年半 A/B 实验经历,聊聊我理解的“科学实验”

@Smallfly:这篇文章主要讲述了作者在淘系两年半的 A/B 实验经历,包括在货架电商和内容电商两个领域的 A/B 实验能力建设。文章中,作者分享了对科学实验的理解和实践,文章中提到了几个关键点:

  1. 业务目标科学:增长目标应该是长期健康、可量化验证的。
  2. 实验设计科学:在常规实验中,样本组的同质性和样本间的独立性是重要的考虑因素。
  3. 实验数据可用:强调了 AA 检验的重要性,以确保实验数据的可用性。
  4. 实验分析科学:在获得可用的数据基础上,关注实验分析的问题,包括确定需要观察的指标和维度,以及如何处理低响应实验。

🐎 彻底弄懂 Linux 下的文件描述符(fd)

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

🐎 OS Style settings view

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

🐎 Flutter 之 HTTP3/QUIC 和 Cronet 你了解过吗?

@极速男孩:本文介绍了 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

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

工具

difftastic

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

内推

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

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

关注我们

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

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

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)