阅读视图

发现新文章,点击刷新页面。

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

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

ios-weekly
老司机 iOS 周报,只为你呈现有价值的信息。

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

文章

🌟 Teaching AI to Read Xcode Builds

@zhangferry:Xcode 原始构建日志对人和 AI 都不够友好,仅提供扁平信息输出。作者通过截获 Xcode 与 SWBBuildService 的通信,挖掘出日志之外的结构化数据,包括构建依赖、详细耗时等核心信息,现在随着 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,已经实现部分实时功能。

🐕 豆包手机为什么会被其他厂商抵制?它的工作原理是什么?

@EyreFree:豆包手机因采用底层系统权限实现 AI 自动化操作,遭微信、淘宝等厂商抵制。其核心工作原理为:通过 aikernel 进程与 autoaction APK 协同,利用 GPU 缓冲区读取屏幕数据、注入输入事件,借助独立虚拟屏幕后台运行,无需截屏或无障碍服务,还能绕过部分应用反截屏限制。AI 操作主要依赖云端推理,本地每 3-5 秒向字节服务器发送 250K 左右图片,接收 1K 左右操作指令。这种模式虽提升自动化效率,但存在隐私安全隐患,易被灰产利用,且冲击现有移动互联网商业逻辑,相关规范与监管仍需完善。感兴趣的同学可以结合视频 【老戴】豆包手机到底在看你什么?我抓到了它的真实工作流程 一起看看。

🐢 How we built the v0 iOS app

@含笑饮砒霜:Vercel 首款 iOS 应用 v0 的移动端负责人 Fernando Rojo 详细分享了应用的构建过程:团队以角逐苹果设计奖为目标,经多轮试验选定 React Native 和 Expo 技术栈,核心聚焦打造优质聊天体验,通过自定义钩子(如 useFirstMessageAnimation、useMessageBlankSize 等)、依赖 LegendList 等开源库实现消息动画、空白区域处理、键盘适配、漂浮作曲家等功能,解决了动态消息高度、滚动异常、原生交互适配等难题;同时在 Web 与原生应用间共享类型和辅助函数,通过自研 API 层保障跨端一致性,优先采用原生元素并针对 React Native 原生问题提交补丁优化;未来团队计划开源相关研究成果,持续改进 React Native 生态。

🐎 Opening up the Tuist Registry

@Kyle-Ye:Tuist Registry 宣布完全开放,无需认证或创建账户即可使用。作为 Swift 生态首个完全开放的 Package Registry,目前已托管近 10,000 个包和 160,000+ 个版本。使用 Registry 的团队可获得高达 91% 的磁盘空间节省(从 6.6 GB 降至 600 MB),CI 缓存恢复时间从 2 分钟缩短至 20 秒以内。开发者只需运行 tuist registry setupswift package-registry set 命令即可配置,支持标准 Xcode 项目、Tuist 生成项目和 Swift Package。未认证用户每分钟可发起 10,000 次请求,对于大多数项目已足够使用。

🐕 Initializing @Observable classes within the SwiftUI hierarchy

@AidenRao:本文探讨了在 SwiftUI 中正确初始化和管理 @Observable 对象的几种模式。作者通过清晰的代码示例,层层递进地讲解了使用 @State 的必要性、如何通过 .task 修饰符避免不必要的初始化开销,以及如何利用 environment 实现跨场景的状态共享。如果你对 @Observable 的生命周期管理还有疑惑,这篇文章会给你清晰的答案。

🐕 Demystifying the profraw format

@david-clang:本文深入剖析了 LLVM 用于代码覆盖率分析的 .profraw 二进制文件格式及其生成机制。其核心原理分为编译时插桩与运行时记录两步:

  1. 编译时,Clang 的 -fprofile-instr-generate 选项会在程序中插入计数器 (__profc_*) 和元数据 (__profd_*) 到特定的 ELF 节中,并在关键执行点插入 Load/Add/Store 指令进行实时计量。
  2. 运行时,LLVM 运行时库通过 atexit() 钩子,在程序终止时自动将内存中这些节的最终数据序列化到 .profraw 文件中。该文件依次包含 Header、Data 段(元数据)、Counters 段(执行次数)和 Names 段,完整记录了代码执行轨迹。

工具

🐕 CodeEdit

@JonyFang:CodeEdit 是一个面向 macOS 的开源代码编辑器项目,使用 Swift/SwiftUI 开发并由社区维护。README 将其定位为纯 macOS 原生编辑器,并以 TextEdit 与 Xcode 作为两端参照:在保持更简洁的使用体验的同时,按需扩展到更完整的编辑与开发能力,并遵循 Apple Human Interface Guidelines。项目目前处于开发中,官方提示暂不建议用于生产环境,可通过 pre-release 版本试用并在 Issues/Discussions 反馈。README 列出的功能包括语法高亮、代码补全、项目级查找替换、代码片段、内置终端、任务运行、调试、Git 集成、代码评审与扩展等。

代码

🐕 mlx-swift-lm

@Barney: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 及往年内参

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)

iOS SwiftUI 布局容器详解

SwiftUI 布局容器详解 SwiftUI 提供了多种布局容器,每种都有特定的用途和行为。以下是对主要布局容器的全面详解: 一、基础布局容器 1. VStack - 垂直堆栈 功能:垂直排列子视图

和媒体共赢 - 读《广告的没落,公关的崛起》

最近读完了《定位》作者艾·里斯的另一本书《广告的没落,公关的崛起》,记录一些心得。

广告的没落

当一个广告让消费者意识到是广告时,广告的效果就会大打折扣。

我记得当年脑白金就把广告做成报纸的新闻报道形式,以此来让大家误以为是报纸在宣传脑白金的功效。但现在广告的监管越来越严,这种擦边的广告越来越难通过审核。

广告追求创意,但消费者购买的是产品。

如果一个产品广告很有创意,但是产品本身很普通。另一个广告很普通,但是产品本身很好。大家还是更可能购买后者。

广告追求创意和讨论,但是真正到了决策环节,影响决策的还是产品本身的心智,而不是广告创意。

产品的创意(创新)比广告的创意更重要。

品牌是潜在顾客心智中的一个认知。

广告很难进入消费者的心智。

相比于广告,公关(具体指通过媒体等第三方途径,间接讲述你的故事)更有可信度,也更有传播性。

消费者在试图评估一个品牌的时候,更倾向从朋友、亲戚,还有权威网站上获得信息,而不是广告。

公关的崛起

因为广告很难进入消费者心智,那么就应该更多通过公关来建立品牌。在通过公关建立品牌后,可以把广告作为维护品牌的工具。

书中结合各种品牌案例,提到了一些技巧。

技巧一:为媒体传播而设计,包括提前透露消息、新的品类/品牌名称、可信度的发言人。书中的案例是 Segway 平衡车。

技巧二:成为争议话题。案例是红牛(某些成份被禁,激发年轻人尝试的好奇心)。

技巧三:创意。为品牌增加一些东西,引起讨论。

技巧四:从小媒体入手。没人比媒体更多地浏览媒体。案例是《定位》一书,该书刚开始只在一个小媒体中被报道,但后来被《华尔街日报》发现,跟进了报道。

我的一些感受

看完本书之后,我刚好刷到一位媒体记者在微博上吐槽小米的公关(如下图)。但是我却从这段话中,看到小米在努力让自己的任何商业行为都成为公关传播的话题。在公关这件事情上,小米做得是非常优秀的。

以上。

KSCrash 实现机制深度分析

目录 1. 概述与基本原理 2. 整体架构设计 3. 核心监控器源码分析 4. 崩溃信息收集机制 5. 崩溃报告生成流程 6. 配置与使用 7. 线程安全与异步安全 8. 最佳实践 1. 概述与基本原

Swift中的知识点总结

1、属性只想让外界访问,而不想让他们修改 // 属性只想让外界访问,而不想让他们修改,此时需要 public private(set) var name 2、智能排序localizedStandard

从 YaoYao 到 Tooboo:watchOS 开发避坑与实战

作为 YaoYao 和 Tooboo 的作者,Haozes 分享了 watchOS 开发中关于版本兼容、App 唤起通信、数据同步、重启恢复、内存泄露和电量优化等高质量实战经验。这篇文章涵盖了从 HealthKit 到 WCSession、从 HKWorkoutSession 到 TimelineSchedule 的完整开发避坑与性能调优指南,对于正在开发或计划开发 Apple Watch 应用的开发者具有极高参考价值。

❌