老司机 iOS 周报 #335 | 2025-05-19
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新闻
Apple 公布将于今年晚些时候推出的强大辅助功能
苹果在辅助功能的上的设计还是非常先进的,现有的一些辅助功能适配起来相对来说还是比较轻松的,期待苹果更多的辅助功能。
文章
🐎 UIApplication delegate deprecation coming in iOS 19 SDK
@Damien:作者通过关注 WebKit 提交记录发现 iOS 19 SDK 中 UIApplicationDelegate 协议中的部分 API 将被弃用,原因是修复因新 SDK 导致的弃用警告,作者预测“新 SDK ”指的是即将在 6 月 WWDC 发布的 iOS 19,苹果工程师们已经在用 iOS 19 SDK 编译 WebKit,所以出现了这些弃用警告。
🐕 Using Model Context Protocol in iOS apps
@含笑饮砒霜:MCP(Model Context Protocol,模型上下文协议)是一种用于大语言模型(LLM)与外部工具交互的协议。它允许模型在对话过程中调用开发者自定义的函数(称为“工具”),以访问本地或远程的数据和服务,从而增强模型的实际能力。这篇文章介绍了如何在 iOS 应用中使用 Model Context Protocol(MCP)集成大模型能力。作者通过示例展示了如何实现一个 MCP Server(用于获取 Apple Health 中的血压数据)和一个 MCP Client(通过 Anthropic Claude API 实现聊天功能)。整个流程包括定义工具、调用本地服务、解析大模型响应,并在用户请求与工具调用之间建立桥梁,实现智能对话与本地数据交互的结合。
🐕 Xtool: cross-platform Xcode replacement. Build iOS apps on Linux and more!
@Kyle-Ye: 这篇贴子介绍了作者的开发名为 Xtool 的跨平台 Xcode 替代工具。Xtool 可以在 Linux 和 Windows 上构建和部署 iOS 应用程序 , 同时也可以在 macOS 上替代 Xcode。它支持使用 SwiftPM 构建 iOS 应用程序、签名和安装应用程序。中间还提到了一些 Xtool 目前还不支持的功能 , 如 Interface Builder、资产目录和 LLDB 调试等,作者表示未来会继续完善这些功能。
🐕 Vibe Xcoding your apps
@EyreFree:本文探讨了 LLMs 驱动的氛围编程(Vibe Coding)在 Xcode 生态的应用,介绍了 Alex、CopilotForXcode 等社区开发的 AI 代码助手,提及 MCP 协议对上下文交互的作用。同时指出了 Xcode 的扩展性局限,期待苹果开放底层接口(如借鉴 VSCode 模式)优化集成,强调了上下文、运行时数据和文档对 AI 辅助的重要性。作者认为氛围编程将推动苹果革新开发者工具,建议感兴趣的朋友持续关注社区在 Xcode 与 AI 整合方面的探索。
🐎 A flowing WebGL gradient, deconstructed
@莲叔: 一篇非常棒的科普文章,通过由浅入深的例子,娓娓道来的揭开了复杂动效的神秘面纱。本质上,绝大多数动画都可以解构为 时间 + 公式 + 图形 api。本篇文章从渐变开始、过度到波浪、贝塞尔曲线等复杂动效,都以思路,公式到代码予以实现,一直到最后实现了一个非常炫酷的动态模糊效果,标题中虽然有 WebGL,但绝大多数代码其实可以非常方便的移植到其他图形 api,如 OpenGL 和 Metal 等等。对动画和图形学有兴趣的同学千万不能错过。
🐕 Unlocking the Real Power of Swift 6's Typed Throws with Error Chains
@阿权:本文围绕 Swift 6 的类型化抛出(Typed Throws)特性展开,重点解决错误处理中的「嵌套地狱」问题,核心内容如下:
- 类型化抛出的优势与挑战
- 优势:编译时错误检查、类型安全、自文档化 API、IDE 支持。
- 挑战:抛出类型只能指定一个,不支持嵌套。多层架构中错误需手动转换,导致代码冗余、类型激增和上下文丢失。
- Catching 协议与 ErrorKit 解决方案
- 引入 ErrorKit,通过
Catching
协议为错误类型添加caught(Error)
case,统一包装子层错误。 - 关键函数:
-
catch
函数:自动将闭包中抛出的错误包装为当前层错误类型,避免手动转换。 -
errorChainDescription
函数:递归构建层级化错误链,保留原始错误上下文,提升调试效率。
-
- 引入 ErrorKit,通过
- 总结
- 类型化抛出结合
Catching
协议,在保证类型安全的同时简化错误处理,ErrorKit 提供的工具链进一步增强了调试能力。 - 适用于复杂多层架构,尤其适合需要清晰错误追踪和高效调试的场景。
- 类型化抛出结合
🐕 Debug crashes in iOS using MetricKit
@Barney:文章介绍如何通过苹果 MetricKit 实现系统级崩溃诊断,捕获内存 / 系统信号等传统工具遗漏的崩溃。涵盖框架配置、调用栈分析和 iOS 版本差异化报告机制(13-14 每日汇总,15+ 即时推送),提供崩溃模拟方案,并展示与 Zoho Apptics 整合实现符号解析与数据可视化。
🐕 Fitting the Lapse experience into 15 MegaBytes
@DylanYang:本文讲述了作者在开发 App Clip 时如何将包体压缩到 15 MB 的方式。作者通过重构依赖关系,减少核心功能的依赖库大小,减少、压缩内置的图片、字体等文件,分割核心模块,较少不必要的代码,裁剪字体包,编译优化等各种手段来极致的压缩包体。虽然这是 App Clip,但是对 App 本体的包体有诉求的开发者也有不错的参考价值。
代码
ButtonKit
@Smallfly:ButtonKit 的设计背景源于 SwiftUI 对异步任务交互的不足,旨在简化开发者在处理复杂用户交互时的工作量。其主要作用是提供一个支持异步操作、进度展示和自定义样式的按钮组件,特别适合需要处理网络请求、文件操作或其他耗时任务的 SwiftUI 应用。开发者可以通过这个库减少样板代码,提升代码可读性和用户体验。
内推
重新开始更新「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)