ITADN
SwiftOldDriver/iOS-Weekly

版本发布 8

老司机 iOS 周报 #368 | 2026-04-13#368
? · 2026-04-12

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/368.png?raw=true) 老司机 iOS 周报,只为你呈现有价值的信息。 你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。 ## 新闻 ### 🐕 [Swift 6.3 Released](https://www.swift.org/blog/swift-6.3-released/) [@Kyle-Ye](https://github.com/Kyle-Ye): Swift 6.3 正式发布,带来了多项语言和工具链层面的重要更新。语言特性方面,新增 `@c` attribute 允许将 Swift 函数和枚举直接暴露给 C 代码并自动生成头文件,新增 `::` 模块名选择器语法解决多模块同名 API 的歧义问题,同时为库作者提供了 `@specialize`、`@inline(always)`、`@export(implementation)` 等性能控制属性。构建工具方面,Swift Package Manager 预览集成了统一的 Swift Build 引擎,并新增预编译 Swift Syntax 支持和 `swift package show-traits` 命令。平台扩展方面,Embedded Swift 在 C 互操作和调试能力上有显著改进,同时本版本也是 Swift SDK for Android 的首个正式发布版本。此外 Swift Testing 新增了 warning 级别的 issue severity 和测试取消支持,DocC 也增加了 Markdown 输出和代码块标注等实验性功能。建议所有 Swift 开发者关注并评估升级。 ## 新手推荐 ### 🐎 [Xcode 26.4 Simulator Paste Is Broken: Here's the Workaround](https://samwize.com/2026/03/30/xcode-simulator-paste-broken-workaround/) [@Barney](https://github.com/BarneyZhaoooo):这篇文章记录了 Xcode 26.4 的一个很影响调试体验的回归问题:Mac 到 iOS Simulator 的剪贴板同步失效,`Cmd + V` 没反应,长按输入框也看不到 Paste。作者尝试了重启 Simulator、切换 Automatically Sync Pasteboard、`killall pboard` 和重置权限等常见手段都无效,最后给出一个可立即落地的 workaround:直接用 `xcrun simctl pbcopy booted` 把宿主机剪贴板内容写入当前启动中的模拟器。文末还补了一个更顺手的版本 `pbpaste | xcrun simctl pbcopy booted`,基本可以当作临时替代方案。适合最近升级到 Xcode 26.4、正好被这个问题卡住的同学收藏。 ## 文章 ### 🐕 [Tracking token usage in Foundation Models](https://artemnovichkov.com/blog/tracking-token-usage-in-foundation-models) [@Cooper Chen](https://github.com/cjlcooper):这篇文章介绍了如何在 Apple Foundation Models 框架中追踪 token 使用情况,并将其作为优化大模型应用的关键指标。作者通过示例展示了如何统计指令、prompt 和完整对话的 token 消耗,并结合上下文窗口评估占用比例,判断是否接近限制。文章还总结了多种优化方法,如精简 prompt、减少冗余内容和拆分长对话,以提升性能和降低成本。同时提供可视化工具帮助开发者直观分析 token 分布。整体而言,这篇文章强调了以 token 为核心的工程优化思路,对构建高效 LLM 应用具有实用价值。 ### 🐕 [Beta Preview: ComposableArchitecture 2.0](https://www.pointfree.co/blog/posts/206-beta-preview-composablearchitecture-2-0) [@AidenRao](https://weibo.com/AidenRao):Point-Free 在这篇 Beta Preview 里预告了 **Composable Architecture 2.0**(Composable Architecture 是 Point ‑ Free 团队开源的一套 Swift 应用架构 / 框架,用来“以一致且可理解的方式”组织业务逻辑,并把 **组合(composition)** 和 **可测试性(testing)** 当作一等公民。它既可以用于 SwiftUI,也能用于 UIKit 等场景。):这是一次从底层模型到日常写法都“重新推倒重来”的大版本更新。它把 API 词汇刻意对齐 SwiftUI(例如 `onChange`、preferences、生命周期回调等),让你用熟悉的视图心智模型去写业务逻辑:`View` 负责“渲染什么”,而新的 `Feature` 负责“要做什么”。 ### 🐕 [Xcode Build Optimization using 6 Agent Skills](https://www.avanderlee.com/xcode/xcode-build-optimization-using-6-agent-skills/) [@阿权](https://github.com/bqlin):作者介绍了自己的一套 AI Agent Skill,可以自动分析并优化 Xcode 项目的编译速度。原理是同城修改 Xcode 项目配置来优化编译流程。处理了影响编译速度的几个因素:代码复杂度、build phases、Swift Package 依赖、增量构建等(具体分析过程可参考 [Build performance analysis for speeding up Xcode builds](https://www.avanderlee.com/optimization/analysing-build-performance-xcode/))。这套 skill 工作流程如下: 1. Orchestrator skill(重点关注)优化编译流水线,分析项目目录,为后续 skill 做好准备。 2. Benchmark skill 执行 3 次干净构建和增量构建,构建信息存到本地 JSON,供后续继续分析。 3. 分析阶段,Compilation Analyzer、Project Analyzer、SPM Analyzer 3 个 skill 做具体的分析,检查 Build Settings、Project Configuration、源码和依赖。 4. 展示优化改进计划。 5. 人工 review 并应用优化选项。 6. Build Fixer skill 应用优化计划。 7. 再次 benchmark 并展示最终优化结果。 文章提供了 AI Agent 提升 iOS 研效的另一种思路,希望对你有所启发。 ### 🐎 [Why Your @Observable Class init() Runs Multiple Times in SwiftUI](https://livsycode.com/swiftui/why-your-observable-class-init-runs-multiple-times-in-swiftui/) [@DylanYang](https://github.com/Dylan19Yang):本文作者主要讲解了 SwiftUI 中被 @Observable 修饰的类初始化方法多次执行的问题,核心原因是使用 @State 存储 ViewModel 时,会随 View 频繁重建重复执行初始化逻辑,搭配 NavigationStack 导航场景会进一步加剧该问题。作者同时给出了.task 延迟赋值、将 ViewModel 托管至上层视图等解决方案,并提醒开发者不要在 init 中编写耗时操作与副作用逻辑。 ## 内推 重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考 具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr) ## 关注我们 我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。 **关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参** ![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true) 同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。 ## 说明 🚧 表示需某工具,🌟 表示编辑推荐 预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #364 | 2026-02-09#364
? · 2026-02-08

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/364.jpg?raw=true) 在各位读者们的陪伴下老司机技术又度过了一年春秋,这一年大模型的发展出乎意料的快,我们也添加了不少相关的实践与经验,拥抱大模型享受红利也是大势所趋。下一期我们的相见就在年后 3 月初了,老司机的编辑们给大家拜年了,新春快乐! 老司机 iOS 周报,只为你呈现有价值的信息。 你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。 ## 新闻 ### [Xcode 26.3 unlocks the power of agentic coding](https://www.apple.com/newsroom/2026/02/xcode-26-point-3-unlocks-the-power-of-agentic-coding/) [Xcode 26.3](https://developer.apple.com/documentation/xcode-release-notes/xcode-26_3-release-notes) 的 RC 版本已发布,大模型编程终于以一个较高的原生支持完成度来到我们身边,推荐与下方 Exploring AI Driven Coding 一文一同观看。 ### [即将生效的 SDK 最低要求](https://developer.apple.com/cn/news/?id=ueeok6yw) 2026 年 4 月 28 日 开始要求必须 Xcode 26 提交 App 的新版本,大家可以早做准备制定升级计划。 ## 新手推荐 ### 🐕 [Intercepting SwiftUI Sheet Dismissal](https://livsycode.com/swiftui/intercepting-swiftui-sheet-dismissal/) [@极速男孩](https://github.com/ztlyyznf001):文章介绍了拦截 SwiftUI Sheet 下拉关闭的巧妙方案:利用 Presentation Detents 设置一个极小高度作为“拦截阈值”。当用户下拉至此,程序会捕捉状态并强制回弹,从而触发确认弹框。该方法不依赖复杂底层手势,实现简单且复用性强。 ## 文章 ### 🌟 🐕 [Exploring AI Driven Coding: Using Xcode 26.3 MCP Tools in Cursor, Claude Code and Codex](https://rudrank.com/exploring-xcode-using-mcp-tools-cursor-external-clients) [@zhangferry](zhangferry.com):Xcode 26.3 带来一项重要更新:官方通过 `xcrun mcpbridge` 桥接工具,向外部 MCP 客户端开放了 20 个原生工具接口。这一举措相较苹果以往的产品策略,显得尤为开放。其核心交互机制为:外部 MCP 客户端(如 Cursor、Claude Code)<-> mcpbridge 桥接工具 <-> Xcode(基于 XPC 通信)。 该功能依托 Xcode 内部运行的 MCP 服务实现,第三方智能代理(Agent)可通过这一链路调用 Xcode 的 MCP 能力,所以该功能无法脱离 Xcode 独立运行。在开放的工具中,除基础的文件读取类工具外,以下几款实用工具值得关注: * BuildProject:构建工程,可快速验证工程代码的可编译性; * GetBuildLog:获取构建日志,助力优化构建流程,也可用于排查构建环节的潜在问题; * XcodeListNavigatorIssues:提取 Xcode 导航栏中展示的各类 issue 或 error 信息,便于快速定位代码问题; * RenderPreview:将 SwiftUI 预览界面渲染为图片文件,直观预览 UI 效果; * ExecuteSnippet:实时执行代码片段,可快速验证小段代码的执行逻辑与结果。 ### 🐕 [The Magic Behind UUID\(\) in Swift, How Your App Generates Truly Unique Identifiers](https://www.swiftdifferently.com/blog/swift/the-magic-behind-uuid-in-swift) [@Barney](https://github.com/BarneyZhaoooo):本文介绍 Swift 中 UUID () 的原理与特性,默认生成 Version 4 随机 UUID。它基于 122 位加密安全随机数,从硬件、系统等多源收集熵值,经 CSPRNG 处理,按 RFC 4122 格式化,唯一性几乎绝对。还提及 Version 1(时间 + MAC 地址)和 Version 7(时间 + 随机),并说明 UUID 高效且无碰撞顾虑。 ### 🐕 [Swift Modules and Code/Assets Duplication](https://pfandrade.me/blog/swift-modules-and-codeassets-duplication/) [@Smallfly](https://github.com/iostalks):这篇文章针对 Swift 模块化开发中的代码与资源重复问题,提供了简洁高效的解决方案。核心内容包括: - **模块化痛点**:使用 Swift Package 拆分模块后,静态链接导致代码在主应用与扩展(如 Action Extension)中重复;资源文件(图片、本地化字符串等)会生成独立 bundle 并被复制到每个依赖 target,增加包体积。 - **代码去重**:创建动态框架聚合所有模块,通过 `Package.swift` 配置动态库目标,让主应用与扩展依赖该框架,避免代码重复链接。 - **资源去重**:利用 Run Script 脚本将模块资源 bundle 移动到动态框架内,删除主应用与扩展中的重复 bundle;结合 `Bundle.module` 的查找逻辑,确保资源访问路径正确。 文章通过具体代码示例与目录结构对比,展示了优化前后的效果,为 Swift 开发者解决模块化带来的包体积问题提供了可落地的实践方案。 ### [Attach to Multiple Processes](https://indiestack.com/2025/11/attach-to-multiple-processes/) [@ChengzhiHuang](https://github.com/ChengzhiHuang):调试工作通常只涉及单个主应用进程。但随着 App Extension、XPC 服务以及更复杂的 macOS 应用架构变得普遍,我们偶尔需要同时关注多个进程。然而 Xcode 在这方面的支持却不尽如人意:它能自动 attach 到你构建的 XPC 服务,但对于非 XPC 的子进程或多个同名进程实例,就显得力不从心,需要手动逐一操作,效率低下。对此作者提供了一个脚本查找所有指定名称的进程,并让 Xcode 的调试器一次性全部 attach 到它们上面。适合有特定需求的同学阅读。 ### 🐎 [How to Avoid Double Updates When Filtering SwiftUI TextField Input](https://livsycode.com/swiftui/how-to-avoid-double-updates-when-filtering-swiftui-textfield-input/) [@阿权](https://github.com/bqlin):文章为文本输入组件的文字 filter 提供了通用的解决方案。本文核心解决 SwiftUI TextField 过滤输入时的 “双重更新” 问题,核心思路封过滤 / 转换逻辑,以解耦上下游逻辑。具体思路如下: 1. 内部缓冲区隔离,引入 “内部缓冲区(internalText)” 与 “外部绑定(text)” 分离的设计: 1. 用户输入路径:键盘输入 → 内部缓冲区 → 过滤 / 转换 → 同步到外部绑定(仅有效值); 2. 外部更新路径:外部绑定修改 → 过滤 / 转换 → 同步到内部缓冲区(确保 UI 一致); 2. 注意事项: 1. 光标位置:编程修改文本可能导致光标重置,复杂场景需适配; 2. 转换规则:需保证确定性和幂等性,避免同步循环。 ### 🐎 [Understanding Spring Animations in SwiftUI](https://www.createwithswift.com/understanding-spring-animations-in-swiftui/) [@含笑饮砒霜](https://weibo.com/chinafishnews/):这篇文章讲解 SwiftUI 中的弹簧动画,说明其模拟物理运动、适配用户直接交互的特性,优于 easeInOut 等动画;介绍了该动画的默认用法、响应速度和阻尼系数两个可调参数,withAnimation 和.animation (_:value:) 两种触发方式,以及手势适配的.interactiveSpring () 修饰符,并结合实操案例展示应用,同时明确其适用于用户触发的操作,加载类自动界面变化则更适合线性 / 缓入缓出动画,强调其能提升应用的交互体验。 ### 🐎 [InlineArray in Swift - Memory Efficient Fixed-Size Arrays](https://www.sagarunagar.com/blog/inlinearray-in-swift/) [@JonyFang](https://github.com/jonyfang): 本文介绍了 Swift 6.2 新增的 InlineArray 类型,一种固定大小、值类型的内联数组。与标准 Array 的堆分配不同,InlineArray 将元素直接存储在值内部,消除了堆分配、引用计数和指针间接访问的开销。核心要点: - 声明与约束:大小是类型的一部分(如 InlineArray<Int, 4>),编译期即确定容量,必须提供恰好该数量的元素,不可 append 或 remove,提供强编译期保证。 - 性能优势:元素连续内联存储,无需指针追踪,CPU 缓存命中率更高,适合数学运算、几何类型、小型缓冲区及框架内部结构等场景。 - 实际应用:文章以 3D 向量为例,将 var values: [Float] 替换为 InlineArray<Float, 3>,在语义更清晰的同时实现零堆分配。支持标准 for-in 迭代,也可通过 Array(inline) 转换为普通数组。 - 适用边界:适合小型固定集合、性能关键路径和框架内部实现;不适合需要 append()、filter()、map() 等动态操作的场景。文章强调 InlineArray 是专用工具而非通用集合,日常应用代码仍推荐标准 Array。 ### 🐎 [Non-Sendable First Design](https://www.massicotte.org/blog/non-sendable-first-design/) [@DylanYang](https://github.com/Dylan19Yang):作者向我们讲述了借助 NonisolatedNonsendingByDefault ,Non-Sendable 类型目前成为了非常适合作为首选的类型,它更简单、没有额外的语法负担,也更通用,没有太多限制不像 Actor。当然 Non-Sendable 也有一些缺点,比如配合 Task 的场景等。开发者可以根据实际需求来做出适合的选择。 ## 工具 ### [steve](https://github.com/mikker/steve) [@EyreFree](https://github.com/EyreFree):steve 是基于 macOS 无障碍 API 开发的命令行工具,主打 Mac 应用的自动化操控,适用于自动化测试与 AI 代理控制场景。它支持通过命令完成应用的启动、聚焦、退出等基础管理,还能发现和定位应用界面元素,实现点击、输入、快捷键触发等交互操作,亦可对窗口、菜单栏进行操控,以及截取应用或指定元素的截图。工具默认输出结构化文本,也支持 JSON 格式,提供断言、等待等可靠性辅助功能,能通过 stderr 反馈错误。对 Mac 端应用自动化操作有需要的同学可以试试。 ## 代码 ### 🐎 [三国霸业 / 伏魔记重制版源码](https://github.com/erduoniba/baye-fmj-app/tree/main) [@Crazy](https://github.com/jiyan135960):一个多平台游戏项目集合,包含几个移植版本的游戏,其中包括在电子词典上非常经典的《三国霸业》与《伏魔记》,尤其是《伏魔记》最后的师尊 boss 更是令人记忆犹新。该项目将多个经典的游戏进行和移植,并且将源码也提供了出来,大家可以在回味童年的时候去学习下小游戏的开发也是一种非常不同的感觉。 ## 内推 重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考 具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr) ## 关注我们 我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。 **关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参** ![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true) 同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。 ## 说明 🚧 表示需某工具,🌟 表示编辑推荐 预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #362 | 2026-01-12#362
? · 2026-01-11

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/362.jpg?raw=true) 老司机 iOS 周报,只为你呈现有价值的信息。 你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。 ## 文章 ### 🐎 [我们如何使用 Codex 在 28 天内构建 Android 版 Sora](https://openai.com/zh-Hans-CN/index/shipping-sora-for-android-with-codex/) [@Crazy](https://github.com/jiyan135960):本篇文章简略的讲述了 OpenAI 的工程师团队是如何利用 CodeX 在 28 天内开发 Sora 的 Android 版本,主要可以分为以下四个部分 1. 在 Codex 在整个代码库中创建和维护大量 AGENT.md 来引导新的开发工程师,减少重复的沟通和模版代码,增加测试量,让团队专注于架构、用户体验、系统性变更和最终质量。 2. 利用项目的整体规则,编写部分具有代表性的端到端功能。通过将 Codex 指向具有代表性的功能,让 AI 在一个标准范围内工作,提高 AI 的生成准确性与工作效率。 3. 在编写代码前使用 Codex 进行规划,利用相关文件并总结该功能的运作原理,即了解 CodeX 是如何从 API 到用户界面的生成过程,并且在生成后进行对应的架构纠正,利用这种可分享的动态策略让 CodeX 生成更加符合架构的代码。 4. 同时运行多个 Codex 会话,一个会话负责回放,一个负责搜索,一个负责错误处理,还有一个则负责测试或重构。多会话会大大提高整体开发效率,并让开发人员处在审核的位置上,而不是开发的位置上。 最后是利用 CodeX 的上下文来让他发挥到最佳水平,也可以跨平台进行上下文分析,但没有上下文就是盲目猜测。 ### 🐕 [Tracking renamed files in Git](https://oleb.net/2025/git-file-renaming/) [@Barney](https://github.com/BarneyZhaoooo):本文聚焦 Git 不直接追踪文件重命名的核心特性,解析其通过文件内容相似度启发式算法推测重命名的逻辑。为确保历史追踪准确,核心建议将重命名单独提交,推荐借助 git mv 命令(暂存重命名操作、保留文件编辑未暂存状态)实现。同时提供替代脚本方案,解决无法使用 git mv 时,重命名与编辑同步进行导致的追踪难题,助力高效管理文件版本历史。 ### 🐕 [Replay](https://nshipster.com/replay/) [@Smallfly](https://github.com/iostalks):这篇文章介绍了 Swift 生态中解决网络测试痛点的工具 Replay,通过记录与重放真实 HTTP 流量,为测试提供高效、稳定的解决方案。核心亮点包括: - 痛点解决:针对网络测试慢、依赖第三方服务不稳定、手动维护 JSON 响应文件易过时的问题,Replay 实现「记录一次,永久重放」,避免测试受网络波动影响。 - 技术优势:采用行业标准 HAR(HTTP Archive)格式存储流量,兼容浏览器开发者工具、Charles 等工具;结合 Swift 6.1 的 `TestScoping` 协议与包插件,实现声明式测试配置。 - 工作流程:首次运行测试时提示记录,后续自动使用本地 HAR 文件,测试速度从分钟级降至秒级。 - 灵活配置:支持过滤敏感数据、自定义请求匹配规则,并提供内联存根功能,适配错误处理等边缘场景。 文章通过代码示例与实践建议,展示了 Replay 如何让网络测试更可靠、高效,是 Swift 开发者优化测试流程的实用参考。 ### 🐎 [Flutter 官方正式解决 iOS 26 上的 WebView 有点击问题](https://mp.weixin.qq.com/s/-Z6oB3aLBwnYZH4DQEX31g) [@david-clang](https://github.com/david-clang):对于 Flutter WebView 在 iOS 26 点击失效和触摸穿透的问题,官方[技术文档](https://docs.google.com/document/d/1ag4drAdJsR7y-rQZkqJWc6tOQ4qCbflQSGyoxsSC6MM)详细阐述了问题原因和解决方案,最终方案是 Flutter Engine + iOS embedder 新增 “同步 hitTest 回调” 能力,将手势决策从“异步协同”改为“同步拦截”,在触点处直接判断是否应拦截手势,从根本解决 WebView、AdMob 等 PlatformView 的手势冲突问题。 因为底层的重构方案还需要上层插件进行适配,官方又合入了个无需插件适配的临时方案作为补充:在 `FlutterPlatformViews.mm` 中实现了针对 `WKWebView` 手势识别器的递归搜索和“重启”机制,并在 `blockGesture` 中针对 iOS 26+ 启用了这个机制。 ## 代码 ### [React Native for macOS](https://github.com/microsoft/react-native-macos) [@EyreFree](https://github.com/EyreFree):微软 react-native-macos 仓库值得关注!作为 Facebook React Native 的开源分支(MIT 许可),它支持用 React 快速构建原生 macOS 应用,兼容 macOS 11+。具备声明式 UI、组件化开发、热重载等优势,还能跨 iOS、Android 复用代码,配套完善文档与贡献指南,更新维护活跃,是 macOS 原生应用开发的高效选择,感兴趣的同学可以试试。 ### [Skills Public](https://github.com/Dimillian/Skills) [@含笑饮砒霜](https://weibo.com/chinafishnews/):这是一个聚焦于 SwiftUI UI 设计模式的代码仓库,核心围绕 SwiftUI 框架提供各类实用的 UI 实现方案、设计最佳实践和代码示例,面向 iOS/macOS 等平台开发者,旨在解决 SwiftUI 开发中常见的 UI 构建问题、统一设计范式。适合 iOS/macOS 开发者(尤其是 SwiftUI 初学者 / 进阶者),可作为 SwiftUI UI 模式的参考手册,快速复用成熟的设计和代码方案,避免重复踩坑。 ## 内推 重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考 具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr) ## 关注我们 我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。 **关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参** ![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true) 同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。 ## 说明 🚧 表示需某工具,🌟 表示编辑推荐 预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #360 | 2025-12-15#360
? · 2025-12-14

# 老司机 iOS 周报 #360 | 2025-12-15 ![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/360.jpg?raw=true) 老司机 iOS 周报,只为你呈现有价值的信息。 你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。 ## 文章 ### 🌟 [Teaching AI to Read Xcode Builds](https://tuist.dev/blog/2025/11/27/teaching-ai-to-read-xcode-builds) [@zhangferry](zhangferry.com):Xcode 原始构建日志对人和 AI 都不够友好,仅提供扁平信息输出。作者通过截获 Xcode 与 SWBBuildService 的通信,挖掘出日志之外的结构化数据,包括构建依赖、详细耗时等核心信息,现在随着 [swift-build](https://github.com/swiftlang/swift-build) 的开源,可以更系统的了解这些构建信息,利用它们可以实现这些功能: * 精准排错:链接错误源于 NetworkKit 模块构建失败,其依赖的 CoreUtilities 正常,问题仅集中在 NetworkKit 本身 * 慢构建分析:47 秒构建中仅 12 秒是实际编译,其余时间用于等待代码签名;8 核 CPU 仅达成 3.2 倍并行,XX 模块是主要瓶颈 * 主动提醒:近一个月构建时间上涨 40%,与 Analytics 模块新增 12 个 Swift 文件相关 * 自然语言查询:支持 “上次构建最慢的模块是什么?”“上周比这周多多少警告?” 等直接提问 利用这项能力对 Wikipedia iOS 应用完成 “体检”,找到多个编译耗时瓶颈,AI 还结合结果给出了模块拆分、并行处理的优化建议。 未来潜力更值得期待:若 Apple 官方支持实时获取构建消息,AI 可在构建中途发现异常(比如 “某模块比平时慢 2 倍,是否暂停检查?”),还能实时监控 CI 构建进度,甚至自动修复问题。作者基于 swift-build 开发了 [Argus](https://github.com/tuist/argus),已经实现部分实时功能。 ### 🐕 [豆包手机为什么会被其他厂商抵制?它的工作原理是什么?](https://mp.weixin.qq.com/s/MEmRkf5MaHDa5zl9n_bbmw) [@EyreFree](https://github.com/EyreFree):豆包手机因采用底层系统权限实现 AI 自动化操作,遭微信、淘宝等厂商抵制。其核心工作原理为:通过 aikernel 进程与 autoaction APK 协同,利用 GPU 缓冲区读取屏幕数据、注入输入事件,借助独立虚拟屏幕后台运行,无需截屏或无障碍服务,还能绕过部分应用反截屏限制。AI 操作主要依赖云端推理,本地每 3-5 秒向字节服务器发送 250K 左右图片,接收 1K 左右操作指令。这种模式虽提升自动化效率,但存在隐私安全隐患,易被灰产利用,且冲击现有移动互联网商业逻辑,相关规范与监管仍需完善。感兴趣的同学可以结合视频 [【老戴】豆包手机到底在看你什么?我抓到了它的真实工作流程](https://www.bilibili.com/video/BV1rNmHBLEN1) 一起看看。 ### 🐢 [How we built the v0 iOS app](https://vercel.com/blog/how-we-built-the-v0-ios-app) [@含笑饮砒霜](https://weibo.com/chinafishnews/):Vercel 首款 iOS 应用 v0 的移动端负责人 Fernando Rojo 详细分享了应用的构建过程:团队以角逐苹果设计奖为目标,经多轮试验选定 React Native 和 Expo 技术栈,核心聚焦打造优质聊天体验,通过自定义钩子(如 useFirstMessageAnimation、useMessageBlankSize 等)、依赖 LegendList 等开源库实现消息动画、空白区域处理、键盘适配、漂浮作曲家等功能,解决了动态消息高度、滚动异常、原生交互适配等难题;同时在 Web 与原生应用间共享类型和辅助函数,通过自研 API 层保障跨端一致性,优先采用原生元素并针对 React Native 原生问题提交补丁优化;未来团队计划开源相关研究成果,持续改进 React Native 生态。 ### 🐎 [Opening up the Tuist Registry](https://tuist.dev/blog/2025/11/26/opening-registry) [@Kyle-Ye](https://github.com/Kyle-Ye):Tuist Registry 宣布完全开放,无需认证或创建账户即可使用。作为 Swift 生态首个完全开放的 Package Registry,目前已托管近 10,000 个包和 160,000+ 个版本。使用 Registry 的团队可获得高达 91% 的磁盘空间节省(从 6.6 GB 降至 600 MB),CI 缓存恢复时间从 2 分钟缩短至 20 秒以内。开发者只需运行 `tuist registry setup` 或 `swift package-registry set` 命令即可配置,支持标准 Xcode 项目、Tuist 生成项目和 Swift Package。未认证用户每分钟可发起 10,000 次请求,对于大多数项目已足够使用。 ### 🐕 [Initializing @Observable classes within the SwiftUI hierarchy](https://nilcoalescing.com/blog/InitializingObservableClassesWithinTheSwiftUIHierarchy/) [@AidenRao](https://weibo.com/AidenRao):本文探讨了在 SwiftUI 中正确初始化和管理 `@Observable` 对象的几种模式。作者通过清晰的代码示例,层层递进地讲解了使用 `@State` 的必要性、如何通过 `.task` 修饰符避免不必要的初始化开销,以及如何利用 `environment` 实现跨场景的状态共享。如果你对 `@Observable` 的生命周期管理还有疑惑,这篇文章会给你清晰的答案。 ### 🐕 [Demystifying the profraw format](https://leodido.dev/demystifying-profraw/) [@david-clang](https://github.com/david-clang):本文深入剖析了 LLVM 用于代码覆盖率分析的 `.profraw` 二进制文件格式及其生成机制。其核心原理分为编译时插桩与运行时记录两步: 1. 编译时,Clang 的 `-fprofile-instr-generate` 选项会在程序中插入计数器 (`__profc_*`) 和元数据 (`__profd_*`) 到特定的 ELF 节中,并在关键执行点插入 Load/Add/Store 指令进行实时计量。 2. 运行时,LLVM 运行时库通过 `atexit()` 钩子,在程序终止时自动将内存中这些节的最终数据序列化到 `.profraw` 文件中。该文件依次包含 Header、Data 段(元数据)、Counters 段(执行次数)和 Names 段,完整记录了代码执行轨迹。 ## 工具 ### 🐕 [CodeEdit](https://github.com/CodeEditApp/CodeEdit) [@JonyFang](https://github.com/jonyfang):CodeEdit 是一个面向 macOS 的开源代码编辑器项目,使用 Swift/SwiftUI 开发并由社区维护。README 将其定位为纯 macOS 原生编辑器,并以 TextEdit 与 Xcode 作为两端参照:在保持更简洁的使用体验的同时,按需扩展到更完整的编辑与开发能力,并遵循 Apple Human Interface Guidelines。项目目前处于开发中,官方提示暂不建议用于生产环境,可通过 pre-release 版本试用并在 Issues/Discussions 反馈。README 列出的功能包括语法高亮、代码补全、项目级查找替换、代码片段、内置终端、任务运行、调试、Git 集成、代码评审与扩展等。 ## 代码 ### 🐕 [mlx-swift-lm](https://github.com/ml-explore/mlx-swift-lm) [@Barney](https://github.com/BarneyZhaoooo):MLX Swift LM 是一个面向 Apple 平台的 Swift 包 , 让开发者能够轻松构建 LLM 和 VLM 应用。通过一行命令即可从 Hugging Face Hub 加载数千个模型 , 支持 LoRA 微调和量化优化。提供 MLXLLM、MLXVLM、MLXLMCommon、MLXEmbedders 四个库 , 涵盖语言模型、视觉模型和嵌入模型的完整实现。开发者只需几行代码就能创建对话系统 , 所有功能通过 Swift Package Manager 便捷集成。 ## 内推 重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考 具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr) ## 关注我们 我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。 **关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参** ![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true) 同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。 ## 说明 🚧 表示需某工具,🌟 表示编辑推荐 预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #351 | 2025-09-15#351
? · 2025-09-14

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/351.jpg?raw=true) 老司机 iOS 周报,只为你呈现有价值的信息。 你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。 ## 新闻 ### [Memory Integrity Enforcement: A complete vision for memory safety in Apple devices](https://security.apple.com/blog/memory-integrity-enforcement/) [@Damien](https://github.com/ZengyiMa):本文章是 Apple 推出的 Memory Integrity Enforcement(MIE)技术,结合自研芯片与系统级安全机制,为 iPhone 17 系列提供业界首个全时开启的内存安全保护,无需用户感知即可防御缓冲区溢出、释放后使用等漏洞。该功能基于增强版 Arm 内存标记扩展(EMTE),配合安全内存分配器与标签保密技术,显著增加间谍软件等高级攻击的开发成本,Apple 称之为“消费级操作系统内存安全史上最大升级”。 ## 文章 ### 🐎 [SwiftUI WebView](https://troz.net/post/2025/swiftui-webview/) [@DylanYang](https://github.com/Dylan19Yang):作者向我们介绍了 Swift UI 中新引入的 WebView 组件。它有非常简单的初始化方式,同时也兼具了很多我们在使用 WKWebview 时经常会用到的功能,如页面加载各个时机的回调、自定义的 scheme handler、js 注入等。作者提供了一个完善的 demo 来展示这些能力。感兴趣的读者可以阅读下本文。 ### 🐎 [Debugging Swift Concurrency: “ Am I on the Main Actor? ”](https://www.swiftyplace.com/blog/debugging-swift-concurrency) [@JonyFang](https://github.com/JonyFang): Swift Concurrency 调试推荐做思维上的转变:从线程思维转向 Actor 思维,关注"我在哪个 Actor 上"而非"我在哪个线程上"。文中描述了 `MainActor.assertIsolated()` 和 `MainActor.preconditionIsolated()` 在 Debug 和 Release 模式下的差异用法。整体在推荐拥抱 Swift 6 的并发安全模型,让 Actor 成为开发过程中思考并发的基础单元。 ### 🐎 [Building a design system at Genius Scan](https://www.swiftbysundell.com/articles/building-a-design-system-at-genius-scan/) [@david-clang](https://github.com/david-clang):文章详细介绍了如何利用 SwiftUI 的组合思想和环境机制,为应用构建灵活的设计系统。核心是通过创建可复用的基础组件(如 `Row`),并利用 `ViewBuilder` 和 `Environment` 实现样式配置与定制,从而高效解决 UI 一致性与代码复用问题。 ### 🐕 [Four Corners: the first game in Catalog written in Swift](https://news.play.date/news/four-corners-swift/) [@极速男孩](https://github.com/ztlyyznf001):Playdate 游戏《Four Corners》被开发者 Steven Chipman 用 Swift 重写,成为 Catalog 中首款 Swift 游戏。此举旨在探索 Swift 在 Playdate 上的性能潜力。Chipman 熟悉 Swift,选择重写此游戏是因为它相对简单且存在性能瓶颈。尽管遇到了缺少部分 API 和 Foundation 库的挑战,以及调试困难,但 PlaydateKit 库极大地简化了开发。Chipman 认为 Swift 的优势(如 C 级性能和易用性)胜过这些不便,并计划未来继续使用 Swift 开发 Playdate 游戏。他还因此重启了《Four Corners》的 iOS 版本。 ### 🐎 [Implementing a Refractive Glass Shader in Metal](https://medium.com/@victorbaro/implementing-a-refractive-glass-shader-in-metal-3f97974fbc24) [@BluesJiang](https://github.com/BluesJiang):这篇文章使用 Metal Shader 来自己尝试实现类似苹果 Liquid Glass 的效果,介绍了玻璃效果的各个组成部分,已经相关的算法。同时也演示了算法中的各个参数是如何影响最终的效果的。推荐有自定义液态玻璃效果的需求或者是想了解相关的实现方式的开发者阅读。 ## 内推 重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考 具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr) ## 关注我们 我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。 **关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参** ![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true) 同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。 ## 说明 🚧 表示需某工具,🌟 表示编辑推荐 预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #350 | 2025-09-08#350
? · 2025-09-07

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/350.jpg?raw=true) 老司机 iOS 周报,只为你呈现有价值的信息。 你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。 ## 文章 ### 🐕 [What's New in the Lambda V2 Runtime (Beta)](https://swifttoolkit.dev/posts/lambda-v2) [@Kyle-Ye](https://github.com/Kyle-Ye): Lambda V2 Runtime 是 AWS Lambda Swift 运行时的重大升级,核心改进是使用 Swift 结构化并发重写了内部实现。新版本引入了更灵活的执行模型,开发者可以控制 `main` 函数入口,支持后台执行(`LambdaWithBackgroundProcessingHandler`)和流式响应(`StreamingLambdaHandler`)等高级特性。同时提供了统一的服务生命周期管理机制,让 Lambda 函数能够优雅地处理初始化和清理工作。对于需要在 AWS Lambda 上运行 Swift 代码的开发者来说,V2 运行时带来了更强大的控制能力和更好的性能表现,值得关注并适时迁移。 ### 🐎 [Flutter 小技巧之有趣的 UI 骨架屏框架 skeletonizer](https://mp.weixin.qq.com/s/ceDt69ue5aV4wGwaGIKmAQ) [@Crazy](https://github.com/jiyan135960):骨架图是 app 中经常用来等待网络加载的一种方式,这种方式可以更友好的让用户知道 app 的状态。Skeletonizer 可以让使用者快速的完成骨架图的功能开发,只需把布局包裹在 Skeletonizer 外层,开启 enabled: true 即可得到骨架屏动画。简单来说 skeletonizer 就是通过自定义 PaintingContext 拦截处理 child 的渲染,让原 UI 直接转化为骨架,而不是手写一份骨架版 UI。还可以通过配置来实现更精细的控制骨架化逻辑,比如跳过、合并等。但是越复杂的界面实现起来也就越困难,很多时候需要自己来实现骨架图。这篇文章主要是给大家一个思路,这种实现方案不仅可以用于骨架图,也可以用来其他的功能开发。 ### 🐕 [果味儿幽灵 -- Xcode 新 AI 助手深度解析](https://mp.weixin.qq.com/s/TzM7MpYCSDrkUuT9eiSFrw) [@Smallfly](https://github.com/iostalks):这篇文章深度拆解了 Xcode 26 全新 AI 助手的技术内核,从源码到行为策略揭示其「苹果味儿」的设计逻辑。核心内容包括: - **架构设计**:采用 Planner-Executor 模型,planner 负责意图分类与方案规划,executor 调用 `edit_file` 等工具执行代码修改,确保行为确定性。 - **策略驱动**:通过外部 `.idechatprompttemplate` 文件定义「苹果优先」规则,强制使用 Swift Concurrency、Swift Testing 等技术,甚至要求回答「苹果新特性」前必须调用 `search_additional_documentation` 检索内部文档。 - **扩展潜力**:prompts 外置、工具动态加载的设计,为开发者定制助手提供可能——修改文本模板或注入自定义工具即可调整其「灵魂」。 - **对比价值**:与 Cursor、Claude Code 等工具对比,突出 Xcode AI 在 IDE 深度集成、企业合规上的优势。 文章结合框架源码与实践案例,为开发者理解这一「执拗」助手的行为逻辑,甚至是二次定制提供了关键视角。 ### 🐎 [iOS 26 正式版即将发布,Flutter 完成全新 devicectl + lldb 的 Debug JIT 运行支持](https://mp.weixin.qq.com/s/cYKke432bBzpg365Ia9y7Q) [@david-clang](https://github.com/david-clang):Apple 在 iOS 26 中禁止 Debug 时 `mprotect` 的 `RX` 权限,将导致真机无法在 Debug Mode 编译成功的[错误](https://github.com/flutter/flutter/issues/163984),Flutter 之前采取的 hack 方案会导致容易出现 `Timed out *** to update` 错误,现在的[方案](https://github.com/flutter/flutter/pull/173443/)是在  iOS 17+ 和 Xcode 26+ 上利用 `devicectl` 和 `lldb` 突破 `RX` 权限限制, 完成了全新 LLDB 调试的适配迁移。 ### 🐎 [What makes Claude Code so damn good (and how to recreate that magic in your agent)!?](https://minusx.ai/blog/decoding-claude-code/) [@zhangferry](zhangferry.com):在编程领域为什么总感觉 Claude Code 比其他 Agent 要强不少?除了模型本身的差异,更重要的是对 Agent 的设计逻辑上,本文罗列了几点值得借鉴的 Agent 设计原则。 1. 控制逻辑设计 * 只保留一个主循环,最多增加一个处理分支。过多分支路径下既容易出错,还不容易调试 * 一些简单工作比如读文件、总结记录等交给小模型处理 2. Prompts 设计 * 要有一个整体的配置文件(类似 claude.md)以记录用户偏好,比如跳过某些文件夹,使用特定的库。来自 MinusX 的实践,在 AI 首次遇到一些不了解的专有名词时,会自动提醒要不要补充信息到该配置文件。 * 一些标记或者示例,可以使用 XML 标签或者 Markdown 语法,以强化提醒 3. Tools 设计 * 在内容搜索时使用 jq、find 这类轻量工具而不是 RAG 这种重工具 * 给工具分类,低级工具(bash 命令、读文件)、中级工具(grep、glob)、高级工具(网页搜索等 MCP),每个工具都注明其适用场景 * 让 AI 自己管理 todo list。长任务里,AI 容易忘事,就让它自己写待办、随时看,还能中途改,避免做到一半 “跑偏” 4. 可控性设计 * 语气和风格限制,使得 AI 回答更简洁 * 对于重要的规则,使用这些关键字 `IMPORTANT`,`NEVER` 会很有效 * 「什么时候该做什么,不该做什么」不易过多,因为他们容易冲突,处理逻辑的关键步骤需补充一些启发式的方法和处理策略 ## 代码 ### [awesome-nano-banana](https://github.com/JimmyLv/awesome-nano-banana) 和 [awesome-gpt4o-images](https://github.com/jamez-bondos/awesome-gpt4o-images) [@EyreFree](https://github.com/EyreFree):当下 AI 生图技术发展迅猛,Nano Banana 和 GPT-4o 备受关注。Nano Banana 基于谷歌 Gemini 2.5 Flash Image 架构,解决了角色一致性等难题,能深度理解物理逻辑,支持对话式编辑,在商业、营销及个人创作等领域应用广泛。GPT-4o 是 OpenAI 的多模态大模型,风格多样,构图真实,便于再编辑且响应迅速,常用于广告、艺术、设计等场景。相关的 [JimmyLv/awesome-nano-banana](https://github.com/JimmyLv/awesome-nano-banana) 和 [jamez-bondos/awesome-gpt4o-images](https://github.com/jamez-bondos/awesome-gpt4o-images) 仓库,收集了大量图像案例与提示词,为探索 AI 生图技术提供了丰富资源。 ## 内推 重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考 具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr) ## 关注我们 我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。 **关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参** ![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true) 同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。 ## 说明 🚧 表示需某工具,🌟 表示编辑推荐 预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #349 | 2025-09-01#349
? · 2025-08-31

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/349.jpg?raw=true) 老司机 iOS 周报,只为你呈现有价值的信息。 你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。 ## 文章 ### 🐎 [Why I'm Not Using Xcode 26's AI Chat Integration (And What Could Change My Mind)](https://www.fline.dev/why-im-not-using-xcode-26s-ai-chat-integration-and-what-could-change-my-mind/) [@阿权](https://github.com/bqlin):文章者结合自身开发体验,分析了 Xcode 26 中 AI 集成的不足,并建议 Apple 补齐(作者也是恨铁不成钢啊!): 1. 请求队列:AI 功能会阻塞输入,无法 “边等待边规划”,打断开发思路。 2. 上下文工程支持:不支持输入上下文文档,需反复解释编码规则,难以调教。 3. 构建验证能力:无法自行构建、读取错误日志,频繁依赖人工操作,打断开发节奏。 4. Git 集成:无法搜索历史、对比版本、自动提交,无法利用代码历史辅助开发(如恢复旧代码、更新文档)。 5. 终端与 CLI 访问:无法通过终端运行自定义的 CLI 工具,简化多任务工作流。 6. 项目文件限制:无法打开多仓库文件夹,适配复杂项目结构的能力差。 7. 网页搜索与文档访问:无法获取最新 API / 提案信息,需手动查找,降低信息获取效率。 作者认为 Xcode AI 目前更像个 “功能展示”(有但难用),而非真正的生产力工具,核心问题是未围绕 “ AI 驱动开发” 的工作流设计(如频繁的人工干预、缺少自动化能力)。 为此,作者也是放弃了 Xcode 转向了 Cursor + Claude Code。 ### 🐎 [Working with partially generated content in Xcode previews](https://www.artemnovichkov.com/blog/working-with-partially-generated-content-in-xcode-previews) [@DylanYang](https://github.com/Dylan19Yang):iOS 26 有了新的 Foundation Models 框架支持开发者通过系统端侧的模型来生成一些数据,本文作者在此之上探索了如何让 Xcode Preview 功能和这些端生成的数据结构进行交互预览。预览 SwiftUI 的静态布局的话我们可以通过代码构造对应的数据结构来 mock 一个实现,此外也可以通过 json 的方式构造一个 GeneratedContent 作为端生成数据结构的初始化参数。如果需要验证流式输出对于 UI 布局的影响,则可以借助 AsyncThrowingStream 来模拟模型生成的场景。 ### 🐢 [From GPT-2 to gpt-oss: Analyzing the Architectural Advances And How They Stack Up Against Qwen3](https://sebastianraschka.com/blog/2025/from-gpt-2-to-gpt-oss.html) [@阿权](https://github.com/bqlin):本文围绕 OpenAI 新发布的开放权重模型 gpt-oss(20B/120B)展开,对比了从 GPT-2 的架构演进,并与 Qwen3 的特性进行对比,最后总结其实用价值和局限。内容可概括为: 从 GPT-2 到 gpt-oss 的架构演进: | 演进点 | 旧设计(GPT-2) | 新设计(gpt-oss) | 收益 | | :----------- | :---------------- | :-------------------------- | :--------------------------------- | | 正则化 | Dropout | 无 Dropout | 单轮训练场景无过拟合风险,提升效率 | | 位置编码 | 绝对位置编码 | RoPE(旋转位置编码) | 支持更长上下文,减少参数 | | 激活函数 | GELU + 2 层前馈 | SwiGLU + 3 层门控前馈 | 降低计算成本,增强表达能力 | | 前馈模块 | 单前馈模块 | MoE(混合专家模型) | 平衡模型容量与推理效率 | | 注意力机制 | MHA(多头注意力) | GQA(分组查询注意力) | 减少显存与计算开销 | | 长上下文优化 | 无 | 滑动窗口注意力(128 token) | 进一步降低长文本推理成本 | | 归一化层 | LayerNorm | RMSNorm | 简化计算,提升 GPU 训练效率 | | 推理控制 | 无 | 推理强度可调(低 / 中 / 高) | 平衡成本与准确率 | gpt-oss 与 Qwen3 模型差异较小,在一些特性上各有千秋: | 维度 | gpt-oss-20B | Qwen3 30B-A3B | | :----------- | :----------------------------------------------------------- | :--------------------------------------------------- | | 架构权衡 | 更宽(嵌入维度 2880)、少量大型专家(32 个) | 更深(48 个 Transformer 块)、大量小型专家(128 个) | | 长上下文处理 | 滑动窗口(13.1 万 token),但设计了 Attention Bias、Attention Sinks | 纯 GQA 支持更长上下文(26.2 万 token) | 实用价值与局限: - 优势:MXFP4 优化适配单 GPU(20B 需 16GB 显存,120B 需 80GB 显存),推理强度可调,性能接近闭源模型; - 局限:幻觉率较高,无训练代码 / 数据集(仅开源权重与推理代码),未提供基础模型; - 未来潜力:随着工具集成成熟,可通过调用外部资源(如搜索引擎)弥补知识遗忘,进一步释放推理能力。 总体而言,gpt-oss 的发布丰富了开源 LLM 生态,为需要本地部署、高推理能力的场景提供了新选择,也为研究 Transformer 架构演进提供了重要参考。 注意:尽管 gpt-oss 名称中,oss 为 Open-source Software,但官方明确它只是开放权重(Open-weight)模型,仅提供模型权重与推理代码,而非完全开源。 ### 🐕 [GPT-5 Thinking System Prompts Leak](https://github.com/asgeirtj/system_prompts_leaks/blob/main/OpenAI/gpt-5-thinking.md) [@Barney](https://github.com/BarneyZhaoooo):这份提示词让我们看到 GPT-5 Thinking 模型的内部运作机制。核心内容包括: • **知识边界**:模型知识截止 2024 年 6 月,当前时间设定为 2025 年 8 月,具备 Web 搜索、Python 分析、图像生成等多种工具集成能力 • **交互规范**:采用三通道架构(analysis、commentary、final),支持富文本 UI 组件(图片轮播、产品卡片、图表),强制要求立即完成任务不可推诿 • **安全机制**:严格的事实核查要求(需引用来源),时效性信息强制网络验证,设有 1-10 级详细度控制参数 为理解大语言模型的提示工程和安全设计提供了珍贵的第一手资料,对 AI 应用开发者极具参考价值。 ### 🐕 [Corner concentricity in SwiftUI on iOS 26](https://nilcoalescing.com/blog/ConcentricRectangleInSwiftUI/) [@AidenRao](https://weibo.com/AidenRao):iOS 26 的同心圆角(Corner Concentricity)是苹果在 WWDC 2025 上强调的一项重要设计理念和视觉特性。同心圆角的核心思想是让嵌套的 UI 元素具有和谐一致的圆角,即使它们的大小或层级不同,其圆角的视觉“圆心”也尽可能保持一致,从而营造出统一、精致且富有纵深感的界面效果。 SwiftUI 引入了 `ConcentricRectangle` 这个新的 API,帮助开发者更高效地在复杂布局中实现完美的同心圆角效果,让界面设计更加统一与精致。 ### 🐕 [MNN LLM Chat iOS 流式输出优化实践](https://mp.weixin.qq.com/s/m5J5nLZiPd_yB0y-byyjCg) [@JonyFang](https://github.com/JonyFang): 本文针对 iOS 应用中部署大语言模型(LLM)时出现的文字流式输出卡顿问题,提出了一套高效的三层优化方案:通过智能流缓冲解决模型输出与 UI 更新的频率不匹配,利用 UI 更新批处理与节流降低主线程压力,并借助打字机动画渲染增强视觉流畅性。这一方案提升了本地 LLM 应用的交互体验,适合开发高性能 AI 聊天应用的团队参考实践。其开源实现:[MNN GitHub 项目 - https://github.com/alibaba/MNN](https://github.com/alibaba/MNN)。 ## 内推 重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考 具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr) ## 关注我们 我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。 **关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参** ![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true) 同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。 ## 说明 🚧 表示需某工具,🌟 表示编辑推荐 预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

老司机 iOS 周报 #345 | 2025-08-04#345
? · 2025-08-03

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/345.jpg?raw=true) 老司机 iOS 周报,只为你呈现有价值的信息。 你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。 ## 新闻 ### [App Store Connect 中的年龄分级现已更新](https://developer.apple.com/cn/news/?id=ks775ehf) 苹果在 iOS 26 及以后的商店中更新了更细化的年龄分级,在现有的 4+ 和 9+ 分级的基础上,更新后的年龄分级系统新增了三个分级:13+、16+ 和 18+。苹果已经向开发者发送了邮件提醒需要完成新的年龄分级调查问卷。大家可以按需填写更新分级。 分级的截止日期为 2026 年 1 月 13 日。 ## 新手推荐 ### 🐎 [Deciding between 'let' and 'var' for Swift struct properties](https://www.swiftbysundell.com/articles/let-vs-var-for-swift-struct-properties/) [@阿权](https://github.com/bqlin):文章围绕 Swift 结构体中 let 与 var 的最佳实践与注意事项展开,内容如下: 1. 结构体的可变性规则 1. 可变性遵循“整体不可变则部分也不可变”规则(即使属性使用 var 声明)。 2. var 声明的实例仅 var 属性可变,let 属性始终不可变。 2. let 的使用场景 1. 唯一 id 属性:一旦创建就不应改变,始终确保实例全局唯一的场景。 2. 依赖初始化的属性:值初始化完成后,后续无需改变的场景。 3. 声明为 let,表达了本质不可变的语义,避免了意外修改,也保证了数据一致性。 3. var 的使用场景 1. 状态属性:需随业务逻辑动态更新。 2. 依赖属性:值需依赖外部条件刷新。 4. 语义表达 1. 两者的使用应更多考虑语义的表达,使其自文档性,let 暗示着永久不可变,var 暗示着可动态调整。 2. 应管控 var 的使用,可提升代码的可预测性。 合理使用 let 与 var 能提升代码安全性、可读性和可维护性,也是 Swift 结构体设计的核心原则。 ### 🐎 [New Watch](https://david-smith.org/blog/2025/07/22/new-watch/) [@Kyle-Ye](https://github.com/Kyle-Ye):一篇 watchOS UI 设计语言变迁的实践记录与设计取舍思考,推荐给关注 watchOS 适配与视觉一致性的开发者。 ## 文章 ### 🐕 [A Peek into My Debugging Process (With Real Examples)](https://www.polpiella.dev/how-i-fix-bugs-in-my-apps/) [@Smallfly](https://github.com/iostalks):这篇文章通过三个真实案例,分享了 iOS 开发者在实际项目中调试应用的完整流程,涵盖崩溃、性能回归与意外系统提示三类常见问题。核心调试策略包括: - **崩溃排查**:结合崩溃日志(含 SwiftUI/AppKit 内部调用栈)、Diagnostics 工具定位网络失败上下文,用 Proxyman 模拟请求失败复现问题,最终通过调整 UI 布局(`HStack` 改 `overlay`)解决。 - **性能优化**:利用 Xcode Instruments 的 Time Profiler 发现串行网络请求,通过 Swift 结构化并发(`async let` 并行任务)提升加载效率。 - **系统提示溯源**:通过注释初始化代码、本地克隆第三方库,定位到 `ProcessInfo().hostName` 调用触发网络权限提示,最终通过库代码替换修复。 文章强调「调试时间主要花在定位而非修复」,系统掌握工具(崩溃日志、Proxyman、Instruments)与方法(二分排查、上下文分析)是提升效率的关键,为开发者提供了可复用的调试实践参考。 ### 🐕 [ChatGPT in Xcode 26: there ’ s a hidden prompt!](https://www.swiftwithvincent.com/blog/chatgpt-in-xcode-26-theres-a-hidden-prompt) [@AidenRao](https://weibo.com/AidenRao):Xcode 26 内置了 ChatGPT 功能,并在对话开始前注入一个隐藏提示词,用于优化 AI 编程助手的输出质量与安全性。了解提示的内容可以让我们更好地理解 ChatGPT 可以访问哪些信息以及苹果给出了什么上下文。 ### 🐕 [Combine and Swift Concurrency: A threading risk](https://www.avanderlee.com/concurrency/combine-and-swift-concurrency-a-threading-risk/) [@Barney](https://github.com/BarneyZhaoooo):这篇文章探讨了从 Combine 迁移到 Swift Concurrency 过程中的线程安全风险。 **核心问题:** 作者在 RocketSim 项目升级到 Swift 6.2 严格并发模式后发现,使用 `Combine` 观察通知并调用 `@MainActor` 标记的方法时,当通知从非主线程发出会导致崩溃。 **关键风险:** `Combine` 的 `sink` 闭包缺乏编译时线程安全检查,而直接使用 `NotificationCenter` 的 `addObserver` 方法则会在编译时报错。这种隐蔽性使得问题只在运行时暴露。 **解决方案:** 推荐迁移到 `Swift Concurrency` 的 `for await` 语法观察通知,获得编译时安全保障。对于必须保留的 `Combine` 管道,建议在 `sink` 内使用 `Task` 包装或通过 `receive(on:)` 指定执行队列。 总结:`Combine` 与 `Swift Concurrency` 混用存在隐性线程风险,应优先迁移到纯 `Swift Concurrency` 方案。 ### 🐎 [My 10 Tips for Using Claude Code](https://samwize.com/2025/07/08/my-10-tips-for-using-claude-code/) [@david-clang](https://github.com/david-clang):这篇文章总结了作者使用 Claude Code 的 10 个高效技巧,推荐给想提升 Claude 使用效率的开发者。包括自定义 Slash 命令、自动生成 commit 信息等加快开发效率的技巧,还有使用 ccusage 统计工具去监控 token 成本的技巧。 ## 代码 ### [Foundation Models Framework Example](https://github.com/rudrankriyam/Foundation-Models-Framework-Example) [@zhangferry](zhangferry.com):该仓库是 Foundation Models 框架的示例演示,除了基本能力:基础聊天、结构化数据生成、流式响应、Tools 调用的示例,还提供了基于这些能力打造的几个示例应用:语音相关的 AI 应用、健康数据分析的 AI 应用、Pokemon 分析的 AI 应用,作者还把常用的 Tools 封装成了一个 [Tools](https://github.com/rudrankriyam/FoundationModelsTools) 库。 Foundation Models 的优势在于本地执行、隐私保证、原生 API,一切看似很美好,但使用前别忘了这些限制:系统版本 26+ 且设备支持 Apple Intelligence。 ## 内推 重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考 - [北京 / 深圳] 抖音基础技术 - 代码分析方向 - iOS 资深研发工程师 - [上海] BiliBili - 移动端开发实习生(社区生态)- iOS/Android 具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr) ## 关注我们 我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。 **关注有礼,关注【老司机技术周报】,回复「2024」,领取 2024 及往年内参** ![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true) 同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。 ## 说明 🚧 表示需某工具,🌟 表示编辑推荐 预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)