老司机 iOS 周报 #330 | 2025-04-07
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新闻
🐕 Swift 6.1 Released
@AidenRao:Swift 6.1 正式推出,核心更新:
-
并发优化:
nonisolated
支持类型和扩展,任务组子任务结果类型自动推断; -
OC 迁移: 新增
@implementation
支持,允许在 Swift 中实现 Objective-C 类型,便于逐步迁移; - 开发体验:尾随逗号支持扩展至参数列表、元组等场景;
-
包管理:新增
package traits
机制,适配跨平台条件编译; - 测试增强:支持自定义测试前后逻辑,异常处理更便捷;
- 文档工具:Swift-DocC 优化符号链接可读性。
推荐通过 Xcode 16.3 或 swiftly
工具链安装体验。
新手推荐
🐕 Modern URL construction in Swift
@阿权:本文介绍了 Swift 在 URL 构建方面的现代解决方案,通过类型扩展、宏和新 API 的结合,实现了更安全、简洁的 URL 处理方式。开发者可根据项目需求选择合适方案,提升代码质量。具体内容为:
- 静态字符串构建 URL 使用 Optional 方式显得冗余,应直接强制解包。
- 解法 1:添加 URL 扩展直接创建 URL 实例,内部解包为空时 fatallError,输出信息。
- 解法 2:通过自定义宏创建 URL 实例,实现解包并抛出错误的逻辑。
- 对于动态构建的 URL,应使用更结构的 URL、URLComponents 拼接、构建方法,甚至能够直接获取本地常见目录的 URL。
文章
🐕 Deploying a Swift Server App to Fly.io and Railway
@Kyle-Ye: 本文介绍了如何使用 Vapor 框架部署 Swift 服务端应用程序到 Fly.io 和 Railway 平台。文章涵盖了初始化 Vapor 项目、编写 Dockerfile、以及在两个平台上部署应用的具体步骤。此外 , 还提到了一些进阶主题 , 如自定义域名和添加数据库服务等。
🐢 AI 产品经理进阶:万字深析大模型的 MCP(上 & 下)
@EyreFree:这篇文章深度剖析了大模型的 MCP 技术。MCP 是 Anthropic 于 2024 年底开源的开放标准协议,旨在统一 AI 与外部数据源和工具的连接方式,降低集成成本。它采用客户端 - 服务器架构,基于 JSON-RPC 2.0 通信,定义多种原语规范交互。该技术已在智能问答、编程辅助、办公自动化等场景崭露头角。文章还全面分析了 MCP 的优势与局限,如标准统一、开源灵活,但也存在生态不完善、远程支持不足等问题。此外,还展望了其未来在完善远程云支持、构建 “应用商店” 式分发机制、拓展多模态应用等方面的演进方向,为 AI 从业者或对之感兴趣的同学提供了极具价值的参考。
🐕 Fast & Fluid: Integrating Rust egui into SwiftUI
@david-clang:作者在开发实时预览 SwiftData 和 CoreData 数据库的 Mac App DataScout 时,发现 SwiftUI 的 Table
性能相当差,尝试用 AppKit 的 NSTableView
也无法满足需求,最后用 Rust 的 UI 框架 egui
去优化性能。作者把 SwiftUI 中嵌入 egui
渲染视图的 Demo 整理成文章,还用代码示例展示如何在 SwiftUI 的 NavigationSplitView
中嵌入 egui
渲染的视图。以下是 egui
和传统 UI 框架的对比:
- 传统 UI 框架(如 SwiftUI、UIKit)多采用保留模式(Retained Mode),需显式管理 UI 组件状态(例如按钮状态、列表数据等),框架内部通过对比新旧状态差异来局部更新界面。
-
egui
的即时模式(Immediate Mode) 则相反:每帧完全丢弃旧 UI 状态,根据当前数据重新生成整个界面,通过高频重建实现“无状态化”。
虽然 Demo 中使用 egui_wgpu_backend
作为渲染后端,但它在 Metal 上渲染单帧需要 10 毫秒,作者在开发 DataScout 时,通过自定义渲染后端,把帧渲染时间缩短到仅 1-2 毫秒,最终才实现高性能需求,可见把 “ SwiftUI 中嵌入 egui
渲染视图” 封装成成熟框架会比较难,但本文优化 SwiftUI 性能的思路值得我们学习。
🐎 得物 iOS 启动优化之 Building Closure
@Smallfly:本文深入解析了 iOS 应用启动优化中常被忽视的 Building Closure 阶段(由 dyld 动态链接器负责),聚焦其耗时问题与优化实践。文章通过真实案例,揭示了某版本因 Building Closure 阶段耗时暴增 200ms 的根因定位过程,并最终通过 解决Perfect Hash 算法的哈希冲突,将关键函数耗时从 1200ms 降至 110ms。
文中详细剖析了 Building Closure 的工作原理(如首次启动生成缓存、Swift/ObjC 协议一致性处理),并提供了 文件结构解析、耗时定位方法(Instrument 工具)及优化方案,适合以下读者参考:
- iOS 开发工程师:需优化应用启动速度,尤其是冷启动场景;
- 性能调优团队:关注底层 dyld 机制,探索启动耗时优化新方向;
- 技术管理者:了解复杂问题排查流程与跨团队协作经验。
内推
重新开始更新「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)