Releases: SwiftOldDriver/iOS-Weekly
老司机 iOS 周报 #352 | 2025-09-22
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新闻
🌟 🐕 Swift 6.2 正式发布
@kemchenj:随着 Swift 语言本身走向成熟,每年的更新慢慢的已经不是集中在语言功能上,投入了更多的精力到工具链和生态建设上。
更加平易近人的 Concurrency
- 默认使用
@MainActor
,减少显式的 isolation 标记 - 更加直观的
async
函数,默认在 caller 的上下文里执行,让class
类型里可以用更简洁直观的方式去实现没有数据竞争的逻辑 - 新增
@concurrent
函数注解,把任务派发到全局任务池
前两个功能都是可以手动开启和关闭的,由于前面两个功能开启后,非 actor 环境下的 async
函数全部都会派发到 @MainActor
执行,导致主线程负载变大,所以新增 @concurrent
可以制定任务派发到全局线程。这几套组合拳下来大大加强了 Concurrency 的易用性。
安全的系统级编程功能
InlineArray
:固定大小的内联数组Span
:可以理解为类型安全的 Buffer 类型- 嵌入式 Swift:新增全套
String
/InlineArray
/Span
API - C++ 互操作:可以通过 header 标注混合使用两个语言里的
Span
的类型
工具链
- VSCode 插件更新
- 更加细化的编译警告控制
- 更快的 Macro 编译速度(通过下载预编译的 swift-syntax 包)
- 优化 async 调试功能的体验和稳定性
核心库更新
- Subprocess:一套全新的 Swift 原生进程接口
- Foundation:NotificationCenter 新增一套类型安全,拥抱 Concurrency 的接口
- Observation:提供更加易用的 async sequence 接口
- swift-testing:新增 API 提高测试代码的表达能力
更多详细信息请查看原文。
文章
🌟 🐢 KMP on iOS 深度工程化:模块化、并发编译与 98% 增量构建加速
@JonyFang: 本文主要介绍了 Bilibili KMP 在 iOS 工程化的一些深度改造,达成模块化、并发编译与 98% 增量构建加速的目标。主要通过对 Kotlin/Native 编译管线的深度拆解与重构,系统性地解决了其在模块化、编译并发和增量构建方面的核心瓶颈。
在构建系统与编译速度上 :实现了 Parallel Compilation
,将每个 Kotlin 模块独立编译为 .a
文件,在一些日常的底层修改的场景下最终产物编译耗时降低 98% 。这充分释放了 Bazel 的高并发优势,结合可靠的 remote cache
机制达到 Never clean build 的预期。
在编码与跨语言交互上:摆脱了 KMP 默认的“大一统”框架模式。通过为每个 Kotlin 模块生成独立的 Clang module
,并以 @ObjCExport
注解精确控制导出,实现了真正的模块化。
在调试与工程化上:通过修复 source-map
路径和实现可靠的 implementation_deps
,保证了跨语言调试的稳定性和构建的确定性,解决了社区方案中的常见痛点。
也推荐几篇前几期的相关阅读:
- 探讨跨平台技术与跨平台 UI 框架及 Kotlin Multiplatform 在 bilibili 的实践
- 工程化视角的 Kotlin Multiplatform 核心解读及优化
- B 站在 KMP 跨平台的业务实践之路
🐎 Automating Github Action Workflows For Swift
@Damien:作者重启搁置的 ActionBuilder 项目,通过扫描 Package.swift 实现零配置生成 GitHub Actions tests.yml,借 Swiftly 自动识别 Swift 版本并调度 Linux/macOS runner,对 iOS 等 Apple 平台则调用 Xcode 构建且已适配 Swift 6.0-6.2,未来将以轻量 CLI 取代插件,可直接嵌入 Xcode build phase 随编译自动更新工作流。
🐕 认知负荷才是关键
@zhangferry:编程领域有很多指导性的理论知识,但这些业界的实践,为什么并非总是有效呢?基于这个问题本文引出认知负荷这个概念:认知负荷是指开发者为了完成一项任务需要动多少脑子。从人的视角出发,以是否便于理解来衡量代码好坏,并给出了以下 4 个降低认知负荷的原则:
-
模块设计:不应一味的强调小方法,小模块,这会导致过多的接口和代码关联,增加认知负荷。深方法,深模块,一定程度把复杂度限定在特定范围,整体维护成本更低。
-
架构选择:不应为体现技术水平采用过于复杂的架构,易懂、易理解的架构才更合适。文中还建议在架构评审时可以让初级开发者参与,以识别过于复杂的设计。
-
抽象和代码组织:不应过于追求 DRY(不要重复自己),而大量使用设计模式,微服务等,少量的重复比不必要的依赖更好。
-
心智模型:传统推崇的心智模型(领域驱动设计 DDD)有其优势,但副作用是会引入很多主观理解,这个基础之上开发的代码往往会有更高的认知负荷。好的代码应该便于理解,而不是追求优雅和复杂。
延伸的几种观念,可能只看名称你就能知道个大概了:「可能是时候停止推荐《代码整洁之道》」、「小型函数的弊端」、「为什么我讨厌“框架”」、「设计牺牲」
🐢 阿权的开发经验小集
@阿权:阿权的日常开发小集,记录了日常开发中踩过的大小坑,内容主要涵盖 Git、iOS、Swift、Xcode 等方面问题的总结。按需搜索,说不定有意外的惊喜。
🐕 iOS26 Runtime Changes:Concurrent mutation of nonatomic properties
@ChengzhiHuang:对于 NSObject 的 property 是 nonatomic 的对象类型时,多线程的 set/get 会存在线程安全问题(非对象一样存在问题,只是不会崩溃),一个简单的修改方案是改为 atomic,注意这个只对一般对象有效。如果是 NSMutableDictionary 等容器对象,还需要考虑对其容器内内容的修改也要注意线程安全,一般得加锁解决;更极端需要多个属性同时保持同步则也得加锁。问题不仅在 property 中存在,全局变量也一样存在问题。具体可以参考我们推荐过的 头条稳定性治理:ARC 环境中对 Objective-C 对象赋值的 Crash 隐患 。
在 iOS 26 以前,一般概率发生的崩溃崩溃的栈顶也在 objc_retain/objc_release 中;在 iOS 26 及之后,则如果发生这种线程安全问题,栈顶函数不变的情况下,会有明确的 EXC_BAD_ACCESS(KERN_INVALID_ADDRESS) 地址为 0x400000000000bad0 让这种情况更容易被辨识。
当然这也会带来一定的副作用,由于实现方式是通过 objc_storeStrong 方法中插入汇编,实现在调用 objc_retain 前,将 0x400000000000bad0 写入 x1 ,再正常调用 objc_retain 方法(正常 objc_retain 只接收一个参数,因此只需要 x0 即可)。因此原本偶现的问题,概率是会被放大的(以前即使有问题,但也有概率不崩溃),因此 iOS 26 的崩溃率对大部分应用来说会上升。稳定性同学要面临年末指标上涨的压力了,毕竟 iOS 26 的覆盖率会快速提升。
但从更长的视角来看,在 iOS 26 暴露了更多问题后,开发者修复后,后续的新版本对低 OS 的用户也带来体验的提升,所以总体我还是偏正常得看待这个 feature 的,等于苹果开启了对一类问题的线上 TSan ,并且对性能的影响微乎其微。短期的阵痛后带来的是更长期的体验提升。美中不足的就是如果这项 feature 能像 malloc 的一些开关(malloc stack logging 等),能让开发者自主控制按一定比例开启就更好了,能有更多时间修复以及控制对升级到 iOS 26 用户的影响。
更具体的一些细节可以看链接。
🐕 How to disable Liquid Glass
@Cooper Chen:在 iOS 26 中,苹果推出了全新的 Liquid Glass 设计系统,为界面带来了更透明、流动的视觉体验。但如果你的 App 还没做好适配,用户可能会遇到界面错乱的问题。作者在文章中给出了一个简洁的解决方案:通过在 Info.plist
中新增键值 UIDesignRequiresCompatibility = YES
,就能让应用暂时保持旧版设计,避免因 Liquid Glass 引发的兼容性 bug。不过要注意,这只是临时方案,苹果计划在 iOS 27 移除该选项。也就是说,开发者需要尽快着手适配 Liquid Glass,以确保用户体验的连贯性和未来的稳定性。对于想稳妥过渡到新系统的团队来说,这是一个既务实又必须关注的技巧。
设计
🐕 marioaguzman Design Guidelines layout marioaguzman Design Guidelines toolbar
@含笑饮砒霜:这两篇文章系统阐述了 macOS 应用在窗口布局和工具栏设计上的核心规范与实践原则:在窗口布局上,需要遵循中心均衡、对齐、留白和视觉平衡的原则,合理安排常规、小型和迷你控件的位置与间距,并通过空白、分隔线或分组框组织控件,确保界面简洁一致;在工具栏设计上,应基于用户的心智模型挑选并排序常用功能,合理区分全局与界面项,正确处理侧边栏和检查器的切换,注意标题、副标题、溢出优先级与居中项的使用,同时结合不同样式(统一、紧凑、扩展、偏好)以及底部栏、附加栏和系统内置特殊控件,实现美观、直观且高效的用户体验。
内推
重新开始更新「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
Full Changelog: #351...#352
老司机 iOS 周报 #351 | 2025-09-15
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新闻
Memory Integrity Enforcement: A complete vision for memory safety in Apple devices
@Damien:本文章是 Apple 推出的 Memory Integrity Enforcement(MIE)技术,结合自研芯片与系统级安全机制,为 iPhone 17 系列提供业界首个全时开启的内存安全保护,无需用户感知即可防御缓冲区溢出、释放后使用等漏洞。该功能基于增强版 Arm 内存标记扩展(EMTE),配合安全内存分配器与标签保密技术,显著增加间谍软件等高级攻击的开发成本,Apple 称之为“消费级操作系统内存安全史上最大升级”。
文章
🐎 SwiftUI WebView
@DylanYang:作者向我们介绍了 Swift UI 中新引入的 WebView 组件。它有非常简单的初始化方式,同时也兼具了很多我们在使用 WKWebview 时经常会用到的功能,如页面加载各个时机的回调、自定义的 scheme handler、js 注入等。作者提供了一个完善的 demo 来展示这些能力。感兴趣的读者可以阅读下本文。
🐎 Debugging Swift Concurrency: “ Am I on the Main Actor? ”
@JonyFang: Swift Concurrency 调试推荐做思维上的转变:从线程思维转向 Actor 思维,关注"我在哪个 Actor 上"而非"我在哪个线程上"。文中描述了 MainActor.assertIsolated()
和 MainActor.preconditionIsolated()
在 Debug 和 Release 模式下的差异用法。整体在推荐拥抱 Swift 6 的并发安全模型,让 Actor 成为开发过程中思考并发的基础单元。
🐎 Building a design system at Genius Scan
@david-clang:文章详细介绍了如何利用 SwiftUI 的组合思想和环境机制,为应用构建灵活的设计系统。核心是通过创建可复用的基础组件(如 Row
),并利用 ViewBuilder
和 Environment
实现样式配置与定制,从而高效解决 UI 一致性与代码复用问题。
🐕 Four Corners: the first game in Catalog written in Swift
@极速男孩: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
@BluesJiang:这篇文章使用 Metal Shader 来自己尝试实现类似苹果 Liquid Glass 的效果,介绍了玻璃效果的各个组成部分,已经相关的算法。同时也演示了算法中的各个参数是如何影响最终的效果的。推荐有自定义液态玻璃效果的需求或者是想了解相关的实现方式的开发者阅读。
内推
重新开始更新「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)
老司机 iOS 周报 #350 | 2025-09-08
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
文章
🐕 What's New in the Lambda V2 Runtime (Beta)
@Kyle-Ye: Lambda V2 Runtime 是 AWS Lambda Swift 运行时的重大升级,核心改进是使用 Swift 结构化并发重写了内部实现。新版本引入了更灵活的执行模型,开发者可以控制 main
函数入口,支持后台执行(LambdaWithBackgroundProcessingHandler
)和流式响应(StreamingLambdaHandler
)等高级特性。同时提供了统一的服务生命周期管理机制,让 Lambda 函数能够优雅地处理初始化和清理工作。对于需要在 AWS Lambda 上运行 Swift 代码的开发者来说,V2 运行时带来了更强大的控制能力和更好的性能表现,值得关注并适时迁移。
🐎 Flutter 小技巧之有趣的 UI 骨架屏框架 skeletonizer
@Crazy:骨架图是 app 中经常用来等待网络加载的一种方式,这种方式可以更友好的让用户知道 app 的状态。Skeletonizer 可以让使用者快速的完成骨架图的功能开发,只需把布局包裹在 Skeletonizer 外层,开启 enabled: true 即可得到骨架屏动画。简单来说 skeletonizer 就是通过自定义 PaintingContext 拦截处理 child 的渲染,让原 UI 直接转化为骨架,而不是手写一份骨架版 UI。还可以通过配置来实现更精细的控制骨架化逻辑,比如跳过、合并等。但是越复杂的界面实现起来也就越困难,很多时候需要自己来实现骨架图。这篇文章主要是给大家一个思路,这种实现方案不仅可以用于骨架图,也可以用来其他的功能开发。
🐕 果味儿幽灵 -- Xcode 新 AI 助手深度解析
@Smallfly:这篇文章深度拆解了 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 运行支持
@david-clang:Apple 在 iOS 26 中禁止 Debug 时 mprotect
的 RX
权限,将导致真机无法在 Debug Mode 编译成功的错误,Flutter 之前采取的 hack 方案会导致容易出现 Timed out *** to update
错误,现在的方案是在 iOS 17+ 和 Xcode 26+ 上利用 devicectl
和 lldb
突破 RX
权限限制, 完成了全新 LLDB 调试的适配迁移。
🐎 What makes Claude Code so damn good (and how to recreate that magic in your agent)!?
@zhangferry:在编程领域为什么总感觉 Claude Code 比其他 Agent 要强不少?除了模型本身的差异,更重要的是对 Agent 的设计逻辑上,本文罗列了几点值得借鉴的 Agent 设计原则。
- 控制逻辑设计
- 只保留一个主循环,最多增加一个处理分支。过多分支路径下既容易出错,还不容易调试
- 一些简单工作比如读文件、总结记录等交给小模型处理
- Prompts 设计
- 要有一个整体的配置文件(类似 claude.md)以记录用户偏好,比如跳过某些文件夹,使用特定的库。来自 MinusX 的实践,在 AI 首次遇到一些不了解的专有名词时,会自动提醒要不要补充信息到该配置文件。
- 一些标记或者示例,可以使用 XML 标签或者 Markdown 语法,以强化提醒
- Tools 设计
- 在内容搜索时使用 jq、find 这类轻量工具而不是 RAG 这种重工具
- 给工具分类,低级工具(bash 命令、读文件)、中级工具(grep、glob)、高级工具(网页搜索等 MCP),每个工具都注明其适用场景
- 让 AI 自己管理 todo list。长任务里,AI 容易忘事,就让它自己写待办、随时看,还能中途改,避免做到一半 “跑偏”
- 可控性设计
- 语气和风格限制,使得 AI 回答更简洁
- 对于重要的规则,使用这些关键字
IMPORTANT
,NEVER
会很有效 - 「什么时候该做什么,不该做什么」不易过多,因为他们容易冲突,处理逻辑的关键步骤需补充一些启发式的方法和处理策略
代码
awesome-nano-banana 和 awesome-gpt4o-images
@EyreFree:当下 AI 生图技术发展迅猛,Nano Banana 和 GPT-4o 备受关注。Nano Banana 基于谷歌 Gemini 2.5 Flash Image 架构,解决了角色一致性等难题,能深度理解物理逻辑,支持对话式编辑,在商业、营销及个人创作等领域应用广泛。GPT-4o 是 OpenAI 的多模态大模型,风格多样,构图真实,便于再编辑且响应迅速,常用于广告、艺术、设计等场景。相关的 JimmyLv/awesome-nano-banana 和 jamez-bondos/awesome-gpt4o-images 仓库,收集了大量图像案例与提示词,为探索 AI 生图技术提供了丰富资源。
内推
重新开始更新「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)
老司机 iOS 周报 #349 | 2025-09-01
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
文章
🐎 Why I'm Not Using Xcode 26's AI Chat Integration (And What Could Change My Mind)
@阿权:文章者结合自身开发体验,分析了 Xcode 26 中 AI 集成的不足,并建议 Apple 补齐(作者也是恨铁不成钢啊!):
- 请求队列:AI 功能会阻塞输入,无法 “边等待边规划”,打断开发思路。
- 上下文工程支持:不支持输入上下文文档,需反复解释编码规则,难以调教。
- 构建验证能力:无法自行构建、读取错误日志,频繁依赖人工操作,打断开发节奏。
- Git 集成:无法搜索历史、对比版本、自动提交,无法利用代码历史辅助开发(如恢复旧代码、更新文档)。
- 终端与 CLI 访问:无法通过终端运行自定义的 CLI 工具,简化多任务工作流。
- 项目文件限制:无法打开多仓库文件夹,适配复杂项目结构的能力差。
- 网页搜索与文档访问:无法获取最新 API / 提案信息,需手动查找,降低信息获取效率。
作者认为 Xcode AI 目前更像个 “功能展示”(有但难用),而非真正的生产力工具,核心问题是未围绕 “ AI 驱动开发” 的工作流设计(如频繁的人工干预、缺少自动化能力)。
为此,作者也是放弃了 Xcode 转向了 Cursor + Claude Code。
🐎 Working with partially generated content in Xcode previews
@DylanYang: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
@阿权:本文围绕 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
@Barney:这份提示词让我们看到 GPT-5 Thinking 模型的内部运作机制。核心内容包括:
• 知识边界:模型知识截止 2024 年 6 月,当前时间设定为 2025 年 8 月,具备 Web 搜索、Python 分析、图像生成等多种工具集成能力
• 交互规范:采用三通道架构(analysis、commentary、final),支持富文本 UI 组件(图片轮播、产品卡片、图表),强制要求立即完成任务不可推诿
• 安全机制:严格的事实核查要求(需引用来源),时效性信息强制网络验证,设有 1-10 级详细度控制参数
为理解大语言模型的提示工程和安全设计提供了珍贵的第一手资料,对 AI 应用开发者极具参考价值。
🐕 Corner concentricity in SwiftUI on iOS 26
@AidenRao:iOS 26 的同心圆角(Corner Concentricity)是苹果在 WWDC 2025 上强调的一项重要设计理念和视觉特性。同心圆角的核心思想是让嵌套的 UI 元素具有和谐一致的圆角,即使它们的大小或层级不同,其圆角的视觉“圆心”也尽可能保持一致,从而营造出统一、精致且富有纵深感的界面效果。
SwiftUI 引入了 ConcentricRectangle
这个新的 API,帮助开发者更高效地在复杂布局中实现完美的同心圆角效果,让界面设计更加统一与精致。
🐕 MNN LLM Chat iOS 流式输出优化实践
@JonyFang: 本文针对 iOS 应用中部署大语言模型(LLM)时出现的文字流式输出卡顿问题,提出了一套高效的三层优化方案:通过智能流缓冲解决模型输出与 UI 更新的频率不匹配,利用 UI 更新批处理与节流降低主线程压力,并借助打字机动画渲染增强视觉流畅性。这一方案提升了本地 LLM 应用的交互体验,适合开发高性能 AI 聊天应用的团队参考实践。其开源实现:MNN GitHub 项目 - https://github.com/alibaba/MNN。
内推
重新开始更新「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)
老司机 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
老司机 iOS 周报 #347 | 2025-08-18
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
文章
🐕 万字长文解码如何玩转Prompt(附实践应用)
@zhanggferry:这是一篇来自淘宝团队,讲解提示词工程(PE)非常全面的文章,包含业界各类优秀方法论,当你苦于 AI 「不听话」时可以从这里获取灵感。除了提示词设计的七个核心原则,还可以结合你的应用场景,考虑使用这六大高级技巧:
- 思维链:提供「推理过程 + 答案」范例,激发 LLM 深度逻辑思考
- 零样本思维链:无需范例,仅追加 “让我们一步一步地思考”,触发 LLM 分步推理
- 自我一致性:调高模型温度,多次独立解答同一问题,按 “少数服从多数” 选最终答案
- ReAct(思考与行动):以 “思考→行动→观察” 循环,让 LLM 调用外部工具(API、搜索引擎等)
- 生成知识提示:先让 LLM 生成问题相关背景知识,再结合知识回答原问题
- 结构化提示:用 XML、JSON、YAML 等严格格式定义提示词,消除歧义
🐕 @isolated(any)
@Smallfly:在 Swift 并发模型逐渐完善的过程中,@isolated(any) 作为一个相对低调却关键的特性,正在为 API 设计与任务调度提供新的可能性。
这篇文章系统地阐释了 @isolated(any) 的设计动机、语义价值以及在实际 API 中的应用方式。作者通过对比 GCD 与 Swift Concurrency,结合异步函数和 actor 隔离的案例,清晰展示了该属性如何让调度系统基于隔离信息做出更合理的决策。
对于大多数开发者而言,@isolated(any) 在日常编码中可能并不直接显现;但若你正在编写并发 API、涉及跨 actor 调度,或希望深入理解 Swift 并发体系的演进方向,这篇文章将为你提供扎实的理论支撑与实践启发。
🐎 Flutter 3.35 发布,快来看看有什么更新吧
@david-clang:这次更新除了常规的控件更新和性能优化外,还有两点值得关注下:
-
多窗口支持:在 Engine 层已实现在 Windows 和 macOS 中创建和更新窗口的基础逻辑 ( #168728 ),后续版本将更新 Linux 系统,并引入实验性 API 以支持多窗口功能。
- 虽然官方还没提供多窗口 Demo 来展示 API 的使用,但社区已有人提交 Windows Demo 的PR,也可以通过 Multi Window 了解官方的进度。
-
Dart & Flutter MCP:Dart 和 Flutter MCP Server 正式 stable 发布,主要是增强了 AI 编码助手的 Dart 和 Flutter 上下文,Dart 和 Flutter MCP Server 充当桥梁,可以让 AI 通过 Dart 和 Flutter 工具链访问项目的更多上下文:
- 修复运行时错误 :检查实时 Widget 树,识别 Flutter RenderFlex 溢出,并自动应用正确的修复。
- 管理依赖项 :在 pub.dev 上找到针对特定任务的最佳包,将其添加到
pubspec.yaml
,然后运行pub get
。 - 编写和纠正代码 :为新功能生成样板,然后自行纠正其在此过程中引入的任何分析错误。
代码
🐕 swiftlang/swift-subprocess: Subprocess is a cross-platform package for spawning processes in Swift.
@Barney:Swift Subprocess
是 Apple 官方提供的一个用于在 Swift
中执行外部进程的现代化库。它提供了类型安全、结构化并发的 API
来启动和管理子进程,支持灵活的输入输出重定向、环境变量配置和进程控制。相比传统的 Process/NSTask API
,它采用了 Swift
并发模型,让异步执行和错误处理更加优雅。该库是 Swift
生态系统中处理外部命令执行的标准解决方案。
🐎 Define the scroll edge effect style of a scroll view for Liquid Glass
@AidenRao:在 OS 26 的液态玻璃适配中,需要借助 OS 26 中引入的 scrollEdgeEffectStyle(_:for:)
方法,去控制滚动视图在边缘区域的样式,尤其是在与安全区域或系统 UI(如标签栏)重叠部分的视觉体验。
内推
重新开始更新「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)
老司机 iOS 周报 #346 | 2025-08-11
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
文章
🐎 Uncertain
@DylanYang:作者向我们描述了原生确定的 Bool 值无法精确表达一些概率出现的场景,因此引入了 Uncertain 这样一个库。它将不确定性引入到了编码之中,它可以通过概率建模来描述一个事件的概率而非结果。这可以被用于 GPS 定位或者传感器噪声等含有不确定性的场景。实际使用时,开发者可以通过比对概率值来进行需要的逻辑开发。感兴趣的读者,可以阅读原文进一步了解。
🐢 一个半月高强度 Claude Code 使用后感受
@JonyFang: Claude Code 在"读懂代码→规划变更→实施改造→文档 / 测试"整链路提效明显,但必须用工程化流程与成本控制兜底。把它当"结对编程伙伴"和"高效审阅者",而不是自动合并器;产出视为草稿,经评审与测试落地更稳。
关键优势:
- 跨文件 / 长上下文理解强,能给出可执行的分步计划
- 重构、迁移、批量机械化改动效率高
- 文档 / 测试 / 变更摘要产出质量好,便于知识传递
- 对话式协作体验顺滑,降低思维切换成本
主要痛点与对策:
- 成本易失控(重度 API/ 长上下文):设预算 / 配额与告警,精简上下文,结果缓存,订阅 +API 混合
- 偶发幻觉 / 环境不匹配:在提示中明确版本 / 依赖,强制编译与测试,小步提交 + 代码评审
- 长会话漂移:阶段性重置,会话内先对齐"当前共识",用固定提示模板
- 合规与隐私:最小化 / 脱敏,优先企业版或私有部署,审计与密钥扫描
适用场景:原型与探索、跨文件重构 / 迁移、批量替换 / 格式化、补齐测试与文档、代码走查与交接
回避场景(尽量不让其直接改动):
- 安全 / 核心关键路径:鉴权与权限、加密与密钥、支付 / 交易、隐私合规、一致性与并发、性能临界路径、底层 FFI(可让其做威胁建模 / 测试清单 / 审阅)
- 强环境耦合构建:工具链与版本、依赖与构建系统、签名与发布、架构 /SDK 差异、链接与符号、脚本与环境变量(可让其做日志总结 / 排查清单 / 最小复现)
与其他工具对比:跨文件理解与规划普遍强于补全型 / 纯 IDE 聊天;但即时补全流畅度与深度 IDE 集成,部分竞品更占优
实施建议:
- 工作流:先"读项目→列计划→小步提交 / 分 PR ",以测试 /CI 护栏把关
- 提示工程:固定模板(项目约束 / 版本 / 风格 / 完成定义),限制改动范围与风险级别
- 质量保障:单测优先、属性测试 / 回归套件、灰度发布与回滚预案
成本策略:设用量监控与告警;合并同类任务批处理;订阅与 API 按场景取舍;重度场景定期复盘性价比(作者实测重度使用可达数千美金级别)
适合人群:需要频繁跨文件改造与知识传递的团队 / 个人;维护大型代码库或做重构 / 迁移 / 文档化的工程师
🐕 @ViewConfigurable — A better way to build SwiftUI components
@AidenRao:如果你想将自定义组件有类似 SwiftUI 的语法,需要针对每一个配置去创建一个新的函数,用于实现链式调用。作者开发了一个名为 @ViewConfigurable 的宏,该宏将根据它在 ViewConfiguration 中看到的变量名自动生成这些链式调用函数,这也会让你的代码文件变的很简洁。
设计
🐢 Designing for the Eye
@阿权:本文围绕 "视觉错觉矫正" 展开,探讨其在排版与建筑中的应用,内容如下:
- 视觉错觉的普遍性
- 以穆勒・莱尔错觉为例,说明视觉错觉对所有人(无论文化背景)的影响一致,甚至适用于动物与触觉感知。
- 保罗・雷纳在《排版艺术》中指出:视觉艺术应以 "视觉呈现" 为基准,而非严格的测量数据—— 因为人类感知存在共性偏差。
- 排版中的视觉矫正
- 以字体 "Futura" 为例,说明字体需通过微调来对抗视觉错觉:如字母 "O" 并非完美圆形,而是略宽于高,水平线条稍细于垂直线条,以避免 "蛋形" 错觉。
- 字母设计需考虑整体协调:如 FF Tisa 的 "O" 上伸部分超出参考线,以平衡与其他字母的视觉重量,避免显得过小。
- 建筑中的视觉矫正
- 以帕特农神庙为例,古希腊建筑师通过系统性调整抵消视觉偏差:
- 柱身 "鼓肚"(entasis):柱子中间微凸,避免因收分导致的 "纤细感";
- 地基弯曲:柱基呈凸形,防止视觉上的 "塌陷";
- 柱子倾斜:所有柱子微微内倾,避免 "外倒" 错觉。
- 这些调整让建筑 "看起来协调",而非追求几何完美,赋予其生命力。
- 以帕特农神庙为例,古希腊建筑师通过系统性调整抵消视觉偏差:
- 深层意义:反对平庸,追求美与文化
- 视觉矫正的本质是对 "视觉真实" 的尊重,体现了对细节与美的极致追求。
- 对比现代 " Excel 思维" 主导的平庸设计(如冰冷的混凝土建筑),强调这种对微妙之处的关注是人性与文化的体现。
- 引用乔布斯的观点:人类进步依赖于传播 "精华",让更多人理解美的微妙——这也是希腊人建造神庙、设计师打磨字体的根本原因。
文章最终呼吁:拒绝平庸,珍视那些让生活值得的 "美与文化"。
课程
Metal Shaders for SwiftUI
@BluesJiang: 这个是一个在 SwiftUI 框架上如何使用自定义的 Shader 来实现高级渲染效果的课程,包含了渲染相关的基础知识,也包含了 SwiftUI 如何兼容使用 Metal Shader 的相关知识。不算是通识的知识,但是对于那些使用 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)
老司机 iOS 周报 #345 | 2025-08-04
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新闻
App Store Connect 中的年龄分级现已更新
苹果在 iOS 26 及以后的商店中更新了更细化的年龄分级,在现有的 4+ 和 9+ 分级的基础上,更新后的年龄分级系统新增了三个分级:13+、16+ 和 18+。苹果已经向开发者发送了邮件提醒需要完成新的年龄分级调查问卷。大家可以按需填写更新分级。
分级的截止日期为 2026 年 1 月 13 日。
新手推荐
🐎 Deciding between 'let' and 'var' for Swift struct properties
@阿权:文章围绕 Swift 结构体中 let 与 var 的最佳实践与注意事项展开,内容如下:
- 结构体的可变性规则
- 可变性遵循“整体不可变则部分也不可变”规则(即使属性使用 var 声明)。
- var 声明的实例仅 var 属性可变,let 属性始终不可变。
- let 的使用场景
- 唯一 id 属性:一旦创建就不应改变,始终确保实例全局唯一的场景。
- 依赖初始化的属性:值初始化完成后,后续无需改变的场景。
- 声明为 let,表达了本质不可变的语义,避免了意外修改,也保证了数据一致性。
- var 的使用场景
- 状态属性:需随业务逻辑动态更新。
- 依赖属性:值需依赖外部条件刷新。
- 语义表达
- 两者的使用应更多考虑语义的表达,使其自文档性,let 暗示着永久不可变,var 暗示着可动态调整。
- 应管控 var 的使用,可提升代码的可预测性。
合理使用 let 与 var 能提升代码安全性、可读性和可维护性,也是 Swift 结构体设计的核心原则。
🐎 New Watch
@Kyle-Ye:一篇 watchOS UI 设计语言变迁的实践记录与设计取舍思考,推荐给关注 watchOS 适配与视觉一致性的开发者。
文章
🐕 A Peek into My Debugging Process (With Real Examples)
@Smallfly:这篇文章通过三个真实案例,分享了 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!
@AidenRao:Xcode 26 内置了 ChatGPT 功能,并在对话开始前注入一个隐藏提示词,用于优化 AI 编程助手的输出质量与安全性。了解提示的内容可以让我们更好地理解 ChatGPT 可以访问哪些信息以及苹果给出了什么上下文。
🐕 Combine and Swift Concurrency: A threading risk
@Barney:这篇文章探讨了从 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
@david-clang:这篇文章总结了作者使用 Claude Code 的 10 个高效技巧,推荐给想提升 Claude 使用效率的开发者。包括自定义 Slash 命令、自动生成 commit 信息等加快开发效率的技巧,还有使用 ccusage 统计工具去监控 token 成本的技巧。
代码
Foundation Models Framework Example
@zhangferry:该仓库是 Foundation Models 框架的示例演示,除了基本能力:基础聊天、结构化数据生成、流式响应、Tools 调用的示例,还提供了基于这些能力打造的几个示例应用:语音相关的 AI 应用、健康数据分析的 AI 应用、Pokemon 分析的 AI 应用,作者还把常用的 Tools 封装成了一个 Tools 库。
Foundation Models 的优势在于本地执行、隐私保证、原生 API,一切看似很美好,但使用前别忘了这些限制:系统版本 26+ 且设备支持 Apple Intelligence。
内推
重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考
- [北京 / 深圳] 抖音基础技术 - 代码分析方向 - iOS 资深研发工程师
- [上海] BiliBili - 移动端开发实习生(社区生态)- iOS/Android
具体信息请移步: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)
老司机 iOS 周报 #344 | 2025-07-28
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
文章
🐕 WWDC 2025: What's new for the Apple community?
@BluesJiang:这篇文章快速介绍了 WWDC25 的重要更新,很适合产品、开发者进行速览,快速发现自己关系的功能和相关技术的介绍。文章很贴心的将相关文档的链接内置的其中方便读者快速检阅。其中的液态玻璃的适配和 Apple Intelligent 是重点的更新项目,也是开发者比较值得关注的地方。因为液态玻璃的启用是系统默认行为,可能会带来不少适配的问题。文章也简单介绍了一下 Swift 和 SwiftUI 的更新。不过文章中没有特别介绍 visionOS 的相关更新,其实这方面苹果也开放了很多新能力来发掘 Apple Vision Pro 的潜能,非常值得相关开发者关注一下。
🐎 迁移至 Swift Actors
@Smallfly:这篇文章聚焦 Swift Actors 在实际项目中的迁移实践,针对传统并发方案(锁、队列)易遗漏保护、无法保证原子性的痛点,给出了 Actor 重构的具体路径。核心内容包括:
- 数据模型重构:通过
actor
替代传统类,编译器强制属性隔离访问,从源头避免数据竞争;结合performInIsolation
实现多属性原子操作。 - 环境桥接:用
nonisolated
标记协议方法,通过Task
异步调用隔离逻辑,兼容同步与并发环境。 - 线程正确性:
@MainActor
标记类 / 属性,编译器检查调用链线程,解决 UI 更新等场景的崩溃隐患;解析@preconcurrency
对 OC 导入类的影响,明确编译器警告边界。 - 内部并发:
nonisolated
函数配合async let
处理耗时任务,结合任务取消机制解决重入问题。
文章以 Uploader
和视图模型为例,串联工具链与代码细节,为老项目迁移至现代并发模型提供了可复用的实践参考。
🐢 CursorShenzhen 0608 讲师 PPT
@Cooper Chen:这是 6 月 8 日深圳 Cursor 技术讲座 PPT 合集,汇集了 6 位专家的精彩分享,其中包括:
- 生产级 Cursor 应用——企业级开发规范、团队协作优化、工程化实践
- AI 创业实战 —— 如何用 Cursor 构建 AI 公司,技术栈选择与商业化落地
- 智能前端开发 —— Cursor + Figma 联动,自动生成高质量前端代码
- 更多实战技巧——代码优化、Prompt 工程、AI 辅助调试与部署
特别适合正在使用 Cursor 的开发者学习参考。
🐕 Giving Claude Code Eyes to See Your SwiftUI Views
@Barney:本文探讨如何为 Claude Code 提供视觉能力来查看 SwiftUI 视图渲染结果,核心方案是通过 Swift Snapshot Testing 实现可视化验证工作流。
技术方案:配置测试套件,建立"生成快照→分析对比→优化代码→迭代验证"的闭环流程。
实战验证:通过重建用户列表界面测试发现,Claude Code 在图像分析方面存在局限性,难以精确识别字体、间距、颜色等细节差异。
结论:当前技术仍处于研究阶段,建议迭代不超过 3 次即引入人工干预,对于像素级需求直接提供设计稿更有效。
🐎 Modern Swift Lock: Mutex & the Synchronization Framework
@DylanYang:作者向我们介绍了 Swift 中的 Mutex 锁,Mutex 锁是 Swift 锁的其中一种,只需要在声明变量时将类型通过 Mutex 关键字包裹起来,后续所有对该变量的访问就都可以通过锁的方式进行从而避免多线程的数据竞争问题。Mutex 也可以和 Swift Concurrency 配合使用。而和 actor 相比 Mutex 更轻量,并且支持同步调用,开发者可以按需在他们之间做出选择。感兴趣的开发者可以阅读一下。
工具
Apple Docs MCP - Apple 开发者文档 MCP
@含笑饮砒霜:这是一个名为 Apple Docs MCP 的开源项目,提供一个 Model Context Protocol(MCP)服务器,专门用于让 AI 助理(如 Claude、Cursor、VS Code 中的 MCP 客户端等)能够通过自然语言查询访问 Apple 官方开发者文档:包括 iOS/macOS/watchOS/tvOS/visionOS 的框架 API、Sample Code、WWDC 视频内容等。如果你是 iOS/macOS 开发者,尤其需要查询最新 iOS 26 / SwiftUI、UIKit、AlarmKit 等 API,并希望 AI 助理能实时且正确地生成示例代码,这个工具可以极大简化流程。
内推
重新开始更新「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)
老司机 iOS 周报 #343 | 2025-07-21
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新手推荐
🐎 Meet the Inspector view in SwiftUI
@阿权:文章介绍了 SwiftUI 中检查器视图(Inspector View)的用法:
- 基本概念与使用场景:
- 检查器视图用于展示主内容的附加信息,默认在右侧展示(macOS/iPadOS),在紧凑尺寸设备(如竖屏 iPhone)上以 sheet 形式呈现。
- 需要 macOS 14+ 和 iOS 17+。
- 基本用法:通过
inspector(isPresented:content:)
控制检查视图的显隐。 - 自定义宽度:支持固定宽度
inspectorColumnWidth(_:)
,和用户拖拽控制宽度inspectorColumnWidth(min:ideal:max:)
。 - 检查器入口按钮与导航工具栏的适配,问题提供了三种适配方案。
- 在紧凑尺寸中的展示效果及其适配方案。
在苹果提供中的 App 中,检查视图是用户早已习惯的交互形式,使用检查视图可能提升 App 的专业性并提升用户体验。
文章
🌟 🐢 An open source tool to speed up iOS app launch
@ChengzhiHuang:Emerge Tools 提供了一个轻量级的收集 App 启动阶段内执行到的函数的收集工具,而不用修改编译选项(开启插桩),以此可以用来投喂给 Xcode 进行二进制重排,进而通过减少启动过程中的 Page In 数量来加快启动速度。技术方案是通过 Linkmap 或者 trick 的方式 收集函数起始的地址。然后对所有函数起始地址替换汇编指令为触发 ARM64_BREAK_INSTRUCTION 。在捕获断点后,记录下此方法,然后跳转原始逻辑继续执行。其中有非常多的细节,推荐对此感兴趣的同学阅读。
同时可以对此工具稍加改造,以此适配收集 App 任意阶段内的执行函数(如某个巨大模块),然后执行预热,以加快某个模块的冷启动首次进入耗时;同时其中涉及到与 SimpleDebugger 的联动,可以进行修改优化,目前是每个函数都执行一次 StopTheWorld + 替换单个函数汇编方便断点记录,可以修改为 批量执行一次 StopTheWorld + 替换所有需要函数。
🐕 Everything You Should Know About Spacer
@AidenRao:SwiftUI 提供了四种 Spacer
类型实现灵活布局:通用 Spacer
在可用空间内沿主轴扩展;_TextBaselineRelativeSpacer
支持文本基线对齐;_HSpacer
/_VSpacer
严格限定方向。它们通过 PrimitiveSpacer
协议共享核心属性(minLength
, axis
, requireTextBaselineSpacing
)
🐕 Swift 6.2 Java 互操作性实践
@含笑饮砒霜:这篇文章展示了如何通过 Swift 6.2 的 swift-java 包实现 Swift 与 Java 的高效互操作。整个过程通过标准工具链(SwiftPM + Makefile)自动化,从 Java 编译到 Swift 调用无缝衔接,大大简化了跨语言开发的复杂度。最终实现了 Swift 程序可以优雅地调用 Java 方法的目标。
🐕 What you need to know before migrating to Swift Testing
@JonyFang: 一篇 Swift Testing 迁移指南摘要,介绍了从传统 XCTest 框架迁移到 Swift Testing 框架前需要了解的关键信息。如:
- Swift Testing 框架的主要优势和新特性
- 迁移过程中可能遇到的常见兼容性问题
- Swift Testing 与 XCTest 的语法和结构差异
- 一些迁移策略建议和最佳实践
对于正在考虑升级测试框架的 iOS 开发者来说,这是一篇实用的参考指南。
代码
部分使用了 Data.bytes 的代码无法正常编译
@Smallfly:iOS 26 SDK 中 Foundation.Data
扩展了新的属性 var bytes: RawSpan { get }
,如果之前的实现里面使用了 CryptoSwift 对 Data 添加的 extension 中的 var bytes: Array<UInt8>
且未明确 import CryptoSwift
就会遇到编译器无法正确匹配实现的问题。
使用到的位置主动 import CryptoSwift
明确实现来源。
CryptoSwift 已将 extension 重命名为 byteArray ,PR。
CrazyFanFan 提供信息
内推
重新开始更新「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)