Skip to content

老司机 iOS 周报 #289 | 2024-05-20

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

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

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

有很多朋友最近在后台留言询问 WWDC 24 内参的相关事宜,今年的内参老司机技术会继续主办,还请大家放心,我们会在合适的时间邀请大家共同参与今年的内参创作!

文章

🐕 SE-0436: Objective-C implementations in Swift

@kemchenj:Swift 团队最近提出了提案 SE-0436,可以用 Swift 来实现 Objective-C 的 Category/Extension,并且让调用者对此毫无感知,就像是 Objective-C 实现的那样,但这个功能的必要性在哪?

  1. 对于大型混编项目来说,Swift 生成的 Header 会严重拖慢增量编译的速度,这一点在 #242 期的 抖音 Swift 编译优化 - 基于自定义 Toolchain 编译提速 60% 里有详细的说明,如果是通过这个功能去实现的话,就可以绕开这个问题
  2. Swift 自动生成的 Header 文件可读性很差,对于习惯了将 Header 文件作为文档阅读的 Objective-C 工程师来说是灾难般的存在
  3. 可以给 Swift 提供更 Swifty 的接口,WebKit 早在这个提案之前就用上了这个功能,给 WKSLinearMediaPlayer 加上了 var isLoadingPublisher: AnyPublisher<Bool, Never> 等接口,试想一下如果底层使用的是 Objective-C 实现的话,那这样 Swifty 的接口可能就很难实现了

🐕 【 Just For Fun 】 C - 宏开发 - 选取第 n 项参数、按照参数数目展开不同的宏、缺陷

@Barney:这个系列文章深入探讨了 C 语言宏的高级应用,从可变参数函数的基础用法,到宏定义中参数的选择和计数,再到延迟展开技术,逐步展示了宏在 C 语言中的灵活性和强大能力。文章通过具体示例,详细解释了如何构建能够根据参数数量动态展开的宏,以及如何利用延迟展开来优化宏的行为。这些技巧不仅增强了对 C 语言宏机制的理解,也为宏编程提供了新的视角和解决方案。

🐢 每个程序员都应该了解的硬件知识

@xuyafei86:在追求高效代码的路上,我们不可避免地会遇到代码的性能瓶颈。为了了解、解释一段代码为什么低效,并尝试改进低效的代码,我们总是要了解硬件的工作原理。于是,我们可能会尝试搜索有关某个架构的介绍、一些优化指南或者阅读一些计算机科学的教科书(如:计算机组成原理)。但以上的内容可能都太过繁琐、细节太多,在阅读的过程中,我们可能会迷失在纷繁的细节中,没法很好地将知识运用到实践中。本文旨在通过多个可运行的 benchmark 介绍常见的优化细节以及与之相关的硬件知识,为读者建立一个简单、有效的硬件心智模型。

🐎 存储空间终于算“对”了

@Smallfly:这篇文章分析了 iOS 系统中 App 显示存储空间与系统显示不一致的问题,并探讨了造成差异的四个主要原因:App 自身大小、进制差异、口径差异和统计路径差异。文章通过实验验证了 iOS 存储空间的显示口径,并介绍了快手 App 如何通过技术改进实现与系统显示对齐,增强了用户体验和信任。

🐎 Flutter 3.22 发布,快来看看有什么更新吧?

@Crazy:本篇文章主要介绍了 Flutter 3.22 中更新的一些主要功能与性能优化。JsonCodable 因该是所有 Flutter 开发者比较期待的一个功能了,Json 的序列化问题一直都是 Flutter 的大麻烦,需要借助 build_runner 生成 Dart 代码来解决。有了 JsonCodable 以后会大大加速 Flutter 开发者的开发效率。本次 Flutter 更新还将 Vulkan backend 和 Wasm Native 两个功能实现了落地,让 Web 的渲染速度得到了巨大的提升。剩下更多的更新可以在文章中浏览。

代码

🌟 🐎 时隔五年,IGListKit 迎来 5.0.0 版本更新

@zvving:时隔五年,Instagram 团队隆重推出了 IGListKit 的 5.0.0 版本(4.0.0 版本的发布时间还是 2019 年 11 月)。这个新版本整合了近年来 Instagram 对 IGListKit 进行的所有增强,引入了后台 diffing 功能,对 scrollToObject: 方法进行了改进,增加了对 Mac Catalyst 的支持,并提供了 IGListAdapter 等更丰富的属性观察与状态回调方式。此外,还对性能进行了优化,并修复了安全性和细节问题,同时带来了一些 Breaking Changes。

考虑到这个版本在多年后带来的众多改进和优化,我们强烈推荐已经使用 IGListKit 的团队关注并尝试更新,以期获得更出色的性能、稳定性和新功能。

🐎 SwiftSecurity: Modern Swift framework for Keychain API

@含笑饮砒霜:SwiftSecurity 是 Apple 安全框架的现代 Swift API (Keychain API、SharedWebCredentials API 等)。通过编译时检查,以更简单的方式保护您的应用程序管理的数据。SwiftSecurity 与其他包装器有些不同,它支持每个钥匙串项目类别,与 CryptoKit 和 SwiftUI 兼容等。

音视频

🐢 The Sound of Software

@CrazyCoderShi: 顾名思义,本系列文章讲述如何在软件中使用声音,从声音的本质开始阐述,到工具推荐,到整体设计,一连串文章一步步带你创造酷炫的声响;该系列由 notboring 产出;notboring 崇尚酷炫的交互和极致的影音体验 , 他们在 App Store 上有诸多酷炫的应用 , 有声音软件开发的同学 , 强烈推荐学习 !

内推

重新开始更新「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)