Skip to content

老司机 iOS 周报 #337 | 2025-06-09

Compare
Choose a tag to compare
@ChengzhiHuang ChengzhiHuang released this 08 Jun 11:47
· 89 commits to master since this release

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

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

文章

🐕 Optimized mathematical computations in Swift

@Barney:这篇文章介绍如何用 SwiftAccelerate 框架 (特别是 vDSP 模块) 高效处理大规模数学计算 (如求和、平均值、标准差)。它替代传统低效方法(如 reduce), 显著提升大数据场景性能 (如百万级健康数据点)。核心展示了 vDSP.sumvDSP.meanvDSP.standardDeviation 的简洁用法,并指出该框架还支持更复杂计算(如机器学习、信号处理)。

🐢 微信自研高性能推理计算引擎 XNet-DNN:跨平台 GPU 部署大语言模型及优化实践

@Cooper Chen:在 AI 大模型落地浪潮中,微信团队的 XNet-DNN 引擎以“一次开发,全平台高效运行”的理念,解决了 LLM 部署的两大痛点:硬件碎片化适配和边缘计算性能瓶颈。其技术突破性体现在三方面:

  • 跨平台统一性
    -- 通过自研 RCI 框架,将 NVIDIA TensorCore、Apple M 系列 GPU、高通 Adreno 等异构硬件的计算能力抽象为统一接口,大幅降低开发成本。对比社区方案(如 llama.cpp),仅需少量代码即可实现更广的硬件覆盖。

  • 性能压榨艺术
    -- 从宏观的系统级优化(Command Tape 减少 CPU 开销)到微观的指令级调优(寄存器分配、Cache 命中),结合硬件逆向工程,真正“榨干”每颗 GPU 的算力潜力。实测显示,其推理速度在多个平台领先竞品 30% 以上。

  • 工业级落地价值
    -- 包体积优化适合移动端,长序列支持(FlashAttention-2)契合实际业务场景,且已通过微信生态验证。对于亟需在端侧部署 LLM 的开发者,XNet-DNN 提供了从理论到实践的完整技术路径。

该技术特别适合三类专业人士深入研读:需要跨平台部署大语言模型的工程师可通过该引擎实现"一次开发,多端适配",大幅提升开发效率;专注边缘计算性能优化的架构师能从其系统级设计思路中获得异构硬件资源调度的创新启发;而致力于 GPU 底层调优的研究者则可借鉴其从硬件逆向到指令级优化的完整方法论,这套基于 Roofline 模型和微基准测试的优化体系具有普适性参考价值。

🐕 一行代码解决 iOS 18 iPad TabBar 位置变化,还你熟悉的底部导航

@BluesJiang: 在 WWDC24 上,苹果对 iPadOS 上的原生 TabBar Controller 的 UI 作了很大的改版。将 SideBar 移动到了顶部,原本在底部的 UI 也移动到了页面的顶部。这种底层 UI 的改动影响到了我们线上的 UI 表现。这篇文章就给出了三个可行的解决方案,将 UI 还原成原来的的样子,

🐎 Compose Multiplatform Skia 对比 Flutter Impeller ,都是跨平台自绘有什么差异

@david-clang:本文大概介绍了 Compose Multiplatform 中的 Skia 和 Flutter 中的 Impeller 的差异,它们最大的区别是两个:

  1. Impeller 定位只为 Flutter 服务,而 Skia 更多考虑兼顾通用性支持。
  2. Impeller 着色器是提前编译,而 Skia 是运行时动态编译。
    • Impeller:通过 impellerc 工具链在应用构建期将 GLSL 转换为 SPIR-V ,再编译为平台原生代码(如 Metal MSL),彻底消除运行时编译开销。
    • Skia:依赖传统 Ganesh 后端,需在运行时动态生成着色器(GPU 指令),首次执行复杂动画易引发卡顿(Jank)

解析二进制重排优化方案,介绍了如何通过 Clang 插桩和 Page Fault 优化提升 iOS 启动性能,附带了 Swift 项目实战技巧与进阶思路。

🐕 『极致』的二进制重排

@JonyFang: 本文介绍了基于 Clang 静态插桩的二进制重排方案,主要解决了 Page Fault 符号部分剩余未彻底清理的问题。基于 SanitizerCoverage 完善符号收集机制,也针对 C++ 静态初始化和 Swift 项目等特殊场景提出优化思路。

工具

🐎 Data Scout: SwiftData debugging tool

@阿权:Data Scout 是一款 SwiftData 调试工具。SwiftData 底层也会使用 SQLite 能力,但读取文件上会有一些细微的差别。

  1. 发现数据库:支持从模拟器、App 或本地目录中自动发现 SwiftData 数据库。
  2. 查看数据库结构与内容:与 SwiftData 一致,以 Swift 模型的形式展示数据库的结构。并支持层级导航。
  3. 支持使用谓词进行高级筛选。
  4. 实时更新:支持数据库在外部被更新时实时展示在 Data Scout App 中。

Data Scout 是作者技术的试验场,其使用了 SwiftSyntax、SourceKit、CoreML、Rust 等技术,App 还在持续更新中,更多内容可以阅读:Behind the Scenes of DataScout: A SwiftData Debugging Tool

代码

Swift Embedded ESP32C6 OLED Demo

@Kyle-Ye: 这个项目展示了如何在 ESP32C6 嵌入式环境中使用 Swift 进行开发,实现了在 OLED 显示屏上渲染旋转 3D 立方体动画。项目的亮点在于演示了 Swift Package Manager 与 CMake 的集成方案,提供了完整的 Swift 嵌入式开发工作流。特别值得关注的是其解决了 Swift 与 C 互操作时的符号链接问题,以及 U8g2 字体优化方案。对于想要探索 Swift 在嵌入式领域应用的开发者来说,这是一个很好的实践参考项目。

内推

重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考

[上海] 米哈游 - 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)