Releases: SwiftOldDriver/iOS-Weekly
老司机 iOS 周报 #355 | 2025-10-20
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
文章
🐎 使用 @_private(sourceFile:) 测试 Swift 私有成员
@阿权:私有成员一直是单元测试的难题,以往的做法要么公开其成员,要么封装供测试的接口,本文提出可以用 @_private(sourceFile:)
测试私有成员。该标识是非公开 API,是编译器专用的接口,可绕过访问控制。不过前提需要为目标模块添加编译标志 -enable-private-imports
,允许其私有成员被外部测试访问,并需用条件编译宏包裹,以防后续编译器更新导致 API 不可用。
通过这种方式,可以在完全不修改原有接口的前提下自由地编写单元测试代码。
Building 17 Agentic AI Patterns and Their Role in Large-Scale AI Systems
@EyreFree:本文聚焦大规模 AI 系统构建,提出 17 种智能体架构及应用场景,含多智能体系统、集成决策、思维树(ToT)等。以 LangChain、LangGraph、LangSmith 为工具栈,详细解析各架构实现流程,如反思架构通过生成 - 批判 - 优化提升输出质量,ReAct 架构借 “思考 - 行动 - 观察” 循环解决多步骤问题,PEV 架构增验证环节应对工具失效。还介绍组合架构思路,强调不同架构协同可实现复杂任务,且附 GitHub 代码库供实践,为大规模 AI 系统开发提供全面参考,在做 AI 相关开发的同学可以看看。
🐎 iOS 26 你的 property 崩了吗?
@Kyle-Ye: iOS 26 Runtime 在 objc_storeStrong
实现中引入了哨兵值机制(0x400000000000bad0),主动暴露 nonatomic 属性的并发访问问题。新实现在写入新值之前,会先向属性地址写入哨兵值,创建一个"危险窗口"。任何在此窗口期间的并发读写操作都会必然触发 EXC_BAD_ACCESS 崩溃,而不再依赖于对象引用计数等不确定因素。文章详细剖析了写写并发(objc_release 崩溃)和读写并发(objc_retain 崩溃)两种典型场景,并介绍了快手自研的 Ekko 安全气垫框架如何通过兜底 Mach 异常来进行崩溃止损。对于维护线上 App 稳定性的开发者来说,这个系统级变更影响全量版本,建议重点关注 nonatomic 属性的线程安全问题,必要时改用 atomic 或添加额外的安全气垫机制进行兜底。
🐕 Build Your First 24/7 Agentic Loop
@Cooper Chen:如果你想了解“ AI Agent 是否能真正实现持续自主执行任务”,WeZZard 的文章与配套项目是极具价值的入门参考。
该文章提出了一个极简且可工程化复用的方法论:
Contract(合同)+ Loop(循环)+ Runtime(运行时)。借助高阶模型(如 Claude 4 或未来的 GPT-5),通过结构化 JSON 协议与工具调用,系统即可在评估者(Evaluator)与执行者(Executor)之间持续推进任务,实现 24/7 agentic 工作流。
配套开源仓库 《agentic-loop-playground》实现了一个完整示例:
- 自动扫描并处理代码中的
TODO/FIXME
- evaluator 决策,executor 执行
- 循环驱动任务直至完成
这是一种无需复杂框架即可落地的智能代理构建方式,非常适合开发者快速启动个人或团队级 Agent 流程。
🐕 Understanding Live Activities: visual micro-storytelling
@AidenRao:这篇文章是关于 iOS 16 引入的 Live Activities(实时活动)功能的设计指南。
- Live Activities 是一种实时微界面,可以在锁屏、灵动岛等处显示应用动态更新。适用于有时间敏感、状态变化的任务,例如:
- 状态跟踪:如外卖配送、出行导航。
- 计时器:如烹饪、停车计时。
- 阶段进程:如电商订单进度。
- 实时更新:如体育比赛得分。
- 不适用情况:静态信息(如天气温度)或非关键更新(如社交点赞),应使用通知或小组件。
Live Activities 的核心是帮助用户快速获取关键动态信息,减少频繁打开应用的需要。设计时应以用户需求为中心,避免滥用。
🐎 iOS 17 + SwiftUI TextField 内存泄漏分析
@DylanYang:iOS 17 引入的 AutoFillUI 框架使得在使用 UITextField 时会发生不预期的内存泄漏,当 UITextField 成为第一响应者且用户离开视图时就会发生。由于在 SwfitUI 中 TextField 可以通过 .environmentObject() 保持对大型对象图的引用,因此在 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 周报 #354 | 2025-10-13
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新手推荐
🐎 Understanding Deflate
@xiaofei86:本文通过手工解码一个 gzip 文件,简单探究了其压缩算法 Deflate 的工作机制,Deflate 结合了 LZ77 算法与 Huffman 编码,通过用 “复制指令” 替代重复片段实现无损压缩。作者以字符串 "TOBEORNOTTOBEORTOBEORNOT" 为例,先解析 gzip 文件头尾结构,再根据 Deflate 规范逐位还原压缩块内容,实现了从 24 字节到 16 字节的压缩。感兴趣的同学可以阅读更多文章了解 ~
文章
🐢 Code along with the Foundation Models framework
@Cooper Chen:这篇文章介绍了 Apple 在 WWDC 2025 推出的 Foundation Models 框架,展示了如何在 iOS 与 macOS 应用中直接调用系统内置的大语言模型,实现真正的 on-device AI。通过一个“旅行行程生成器”的示例,作者带你一步步完成从文本生成到结构化输出的全过程,深入展示 Apple Intelligence 的开发潜力。
主要亮点包括:
- 隐私与安全:模型完全在设备上运行,无需上传数据或调用云端接口。
- 结构化输出:利用
@Generable
让模型直接生成 Swift 类型的数据,而非普通文本。 - 提示优化技巧:通过 instructions、示例(one-shot)提升输出质量与稳定性。
- 流式响应:实时展示生成过程,让用户体验更自然流畅。
- 工具调用(Tool Calling):让模型能主动调用外部函数或服务,融合实时数据与智能生成。
这篇文章不仅是一份技术指南,更是 Apple 对 AI 未来方向的实践展示。
它强调 隐私优先、系统原生、开发高效 的理念,是每位希望深入了解 Apple Intelligence 的开发者必读之作。
🐎 Enabling enhanced security for your app
@Damien:这篇文章介绍了如何在 Xcode 中为应用启用增强安全性的方法,包括启用地址空间布局随机化(ASLR)、栈保护、堆保护、整数溢出检查和缓冲区溢出检查等编译器安全功能,以防御常见漏洞并提升应用抗攻击能力。
🐕 How to install Xcode 26's Metal Toolchain on CI/CD
@Barney:我来帮您获取并总结这篇文章的内容。这篇文章介绍了 Xcode 26 不再默认包含 Metal 工具链的问题及解决方案。在本地开发时可通过 Xcode 偏好设置安装,但在 CI/CD 环境(包括 Xcode Cloud)中需要使用 xcodebuild 命令行工具手动下载和安装。文章提供了具体的脚本代码,建议在 Xcode Cloud 中作为 post clone 脚本运行。
工具
swift-profile-recorder
@Smallfly:Swift Profile Recorder 是一款「进程内」采样分析器,专为受限容器环境而生:不需要 CAP_SYS_PTRACE,就能在 Linux 与 macOS 上抓取 on-CPU 与 off-CPU 样本,定位真实的性能瓶颈。你只需以 Swift 包集成并启用内置服务器,即可用一次 curl
拿到已符号化的 Linux perf 格式数据,直接拖到 Speedscope / Firefox Profiler 或用 FlameGraph 生成火焰图。集成轻量、开销可控,特别适合线上 Kubernetes/Docker 场景的故障排查与持续优化。
内推
重新开始更新「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 周报 #353 | 2025-09-29
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
文章
🐢 We Need to Talk About Observation
@Smallfly:这篇文章深度探讨了 Swift 观察机制的新旧范式更迭,从 ObservableObject
+ Combine
的旧时代到 @Observable
宏 + Observations
结构体的新生态,揭示了迁移过程中的关键挑战与设计考量。核心内容包括:
- 旧范式的价值:回顾
@Published
+Combine
在对象间观察(如UserCoordinator
与SyncEngine
)的简洁性——自动管理订阅生命周期、支持跨对象响应,为复杂业务逻辑提供低耦合解决方案。 - 新范式的突破与局限:分析
@Observable
宏在 SwiftUI 集成(属性访问优化、嵌套支持)的优势,同时指出withObservationTracking
(单次触发需递归调用)与Observations
结构体(任务生命周期管理复杂)在非 UI 场景的不足——订阅取消需手动管理Task
、对象弱引用易出错。 - 迁移建议:强调选择方案时需超越 UI 层考量,关注业务逻辑中对象间观察的实际需求,避免因新特性的「表面简洁」忽略生命周期管理的潜在风险。
文章以开发者视角对比新旧机制的工程实践差异,为理解 Swift 观察体系演进提供了务实的参考。
🐕 Xcode Migrations: From Stone Age to AI Mastery
@Barney:这篇文章讲述了 Qonto 团队如何将 Xcode 升级从三周噩梦转变为一天自动化流程。
背景: 60+ iOS 工程师团队面临 Xcode 升级瘫痪开发流程的问题,依赖管理冲突和构建失败频发。
核心改进:
- 架构优化:移除 CocoaPods,统一使用 Swift Package Manager
- 自动化监控:Swift 构建的 Xcode Release Checker,CI 监控版本发布并 Slack 通知
- 沟通策略:建立迁移门户和可视化时间线,团队理解度从 33% 提升至 90%
- CLI 工具:Swift 自动化迁移流程,包括分支创建、构建清理、版本更新等
- AI 集成:构建 Swift MCP 工具和 Xcode Migrator AI 助手,提供 24/7 技术支持
⠀效果: 迁移时间从 21+ 天缩短至 5 天(75% 减少),60+ 工程师零工作中断。通过持续改进理念,将最大痛点转化为竞争优势,目标进一步缩短至 1 小时。
🐢 iOS Rendering Documentation
@Kyle-Ye: 这份文档深入剖析了 iOS 渲染系统的底层架构,详细阐述了从 UIView 到 CALayer、CAContext 再到 FBSScene 的完整渲染管道。文档特别解释了 Front Board Scene (FBS) 的工作机制以及 CAContext 的 contextID 如何用于跨进程 IPC 通信。内容涵盖了层级合成模型、场景管理、渲染同步、动画协调等核心概念,为理解 iOS 图形系统提供了前所未有的技术深度。对于需要进行系统级渲染研究、性能优化或底层拦截开发的高级 iOS 开发者来说,这是一份极其宝贵的参考资料。
🐎 Should you opt-in to Swift 6.2 ’ s Main Actor isolation?
@DylanYang:Xcode26 为工程带来了新的 actor 隔离默认配置值,允许全局的代码默认运行在 main actor 上。作者通过一些 demo 讲述了启动此配置后能帮助我们简化大量的标记 @mainactor 的代码,降低了并发代码的复杂度。同时作者建议大部分情况下可以默认开启此配置,并通过 @Concurrent 标记来让特定代码去后台线程运行。感兴趣的开发者可以阅读本文详细了解下开关带来的实际影响。
🐎 Flutter 官方 LLM 动态 UI 库 flutter_genui 发布,让 App UI 自己生成 UI
@Crazy:现今在开发者领域 AI 已经进入了日常开发的方方面面,AI 生成 UI 也是大模型落地的一个方面,Flutter 官方更是开发了一个可以利用大模型动态生成 UI 的库,该库用“受控、可组合、可回传状态”的运行时 UI 替代文本,显著提升 AI 交互质量,并且与主流 LLM 框架的顺滑对接。但是更新也更加频繁,UI 的更新消耗也是很大的。该库主要的五个概念分别为 :UiAgent、Widget Catalog、AiClient、GenUiManager、GenUiSurface。关于具体的生成,可以看文章中的实例与图片演示。文章中提到的 Filebase 与 Gemini,都是由 Google 开发的,对国内开发者都不是很友好。
内推
重新开始更新「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 周报 #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)