老司机 iOS 周报 #348 | 2025-08-25
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新手推荐
🐎 High Level Anatomy of a Camera Capturing Session
@AidenRao:这边文章用比较简单易懂的话,介绍苹果的相机从拍摄到 Swift 中展示的完整流程。文章不长,比较适合做个相机原理了解。
文章
🌟 🐕 从 DisplayList 到 Transaction: SwiftUI 调试实战
@Kyle-Ye: 文章介绍了如何通过 SwiftUI 中的相关环境变量,使用 DisplayList 输出分析视图渲染问题,通过符号断点和汇编调试深入分析 SwiftUI 内部机制,并使用 AttributeGraph 等调试工具进行问题定位。
🐕 Faster Equatable and Hashable conformances with Identifiable
@Smallfly:这篇文章聚焦 Swift 中 Equatable
与 Hashable
协议的性能优化,揭示了编译器自动合成实现的潜在瓶颈,并提出结合 Identifiable
协议的改进方案。核心内容包括:
- 问题分析:默认合成的
Equatable
/Hashable
会逐成员比较或哈希,对含大集合(如[User]
)或嵌套结构的类型,复杂度达 O(N),在 SwiftUI 视图更新、Set
操作中易成性能瓶颈。 - 优化方案:利用
Identifiable
的id
属性(如UUID
),仅基于唯一标识实现Equatable
和Hashable
,将操作复杂度降至 O(1)。 - 数据验证:基准测试显示,含 1000+ 员工的
Company
类型,Identifiable
方案的Equatable
快 3 倍,Hashable
快 3 万倍。
文章结合编译器源码与 SwiftUI 实践,为性能敏感场景提供了可落地的优化思路。
🐢 What's New in UIKit
@Barney:这篇文章详细总结了 iOS 26 中 UIKit 的全面更新。尽管 UIKit 不再是 WWDC 的主角,但今年仍获得了大量新特性。
主要更新概况:
• Liquid Glass
设计语言:新增 UIGlassEffect
、UIButton.Configuration
的玻璃按钮样式,以及 UIBarButtonItem 的共享背景支持
• 导航栏增强:UINavigationItem
新增 subtitle
、largeTitle
、attributedTitle
等属性,支持更丰富的标题展示
• 分割视图改进:UISplitViewController
支持新的 inspector
列,提供类似 macOS
的检查器面板
• 标签栏配件:UITabAccessory
允许在标签栏上方添加浮动工具栏,支持折叠展开动画
• HDR 色彩支持:UIColor
新增 HDR 初始化方法,UIColorPickerViewController
支持曝光调节
• 角落配置 API:UICornerConfiguration
提供统一的圆角设置方案,支持容器同心圆角
• 自然文本选择:UITextView
支持混合左右文字的自然选择,selectedRanges
替代 selectedRange
• 主菜单系统:UIMainMenuSystem
为 iPadOS
提供 macOS
风格的菜单栏
• 观察者模式集成:UIView
和 UIViewController
原生支持 Swift Observation
框架
• 滑块增强:UISlider
新增刻度配置和无拖柄样式
整体而言,iOS 26 的 UIKit
更新聚焦于视觉现代化、跨平台一致性和开发便利性的提升。
🐕 SwiftUI for Mac 2025
@Cooper Chen:这篇文章总结了 SwiftUI 在 macOS 26 上的多项改进,主要亮点包括:
- 统一图标格式:Xcode 26 新增 Icon Composer,可用 SVG 分层生成跨平台图标,并向下兼容旧系统。
- Liquid Glass 风格:按钮、滑块、切换等控件拥有玻璃质感与动态反馈,UI 更现代。
- 原生 WebView:SwiftUI 首次内置 WebView,无需桥接即可加载网页并追踪导航事件。
- 列表性能优化:List 在处理上万条数据时依然流畅,适合大数据量展示。
整体来看,SwiftUI 在 Mac 上的易用性与表现力进一步提升,对想要打造现代化界面的开发者非常有参考价值。
🐎 Git 2.51 support push/pull stash
@david-clang:过去 git stash 难以在不同机器之间迁移,Git 在 8 月 18 日发布的 2.51.0 版本支持 push/pull stash,实现跨机器共享 stash。但要在 GUI 工具上应用该特性,还要再等等,目前 Fork 支持的 Git 版本是 2.45.2。
内推
重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考
具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)
关注我们
我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。
关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参
同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
说明
🚧 表示需某工具,🌟 表示编辑推荐
预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
What's Changed
- fix #5107 by @BarneyZhaoooo in #5117
Full Changelog: #347...#348