# 老司机 iOS 周报 #329 | 2025-03-31

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/weekly-header/329.jpg?raw=true)
老司机 iOS 周报，只为你呈现有价值的信息。

你也可以为这个项目出一份力，如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们，我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。

## 新手推荐

### 🐎 [Understanding structural identity in SwiftUI](https://tanaschita.com/swiftui-structural-identity/)

[@阿权](https://github.com/bqlin)：SwiftUI 使用结构体描述视图，由 SwiftUI 内部完成视图的绘制与更新。而结构体标识则是视图层级中的唯一 id，用于识别状态变化前后的视图结构体是否是同一视图，进而进行更新和重绘。

文章介绍了 SwiftUI 结构体标识的基本原理和应用、SwiftUI 重绘机制以及 SwiftUI 结构体标识的具体实践。

## 文章

### 🐢 [Profiling apps using Instruments](https://developer.apple.com/tutorials/instruments)

[@Smallfly](https://github.com/iostalks)：这是苹果官方出品的 Instruments 教程。Instruments 主要用来分析应用程序的性能、资源使用和行为，了解如何提高响应性，减少内存使用，以及运行时的复杂的行为。该教程包含对卡顿的基础知识介绍，卡顿的分析和检测，并提供了卡顿的优化建议。

### 🐢 [充分理解 C/C++ 重要概念：运行时库](https://mp.weixin.qq.com/s/Fed-0uVaOGDUiftH43vnGA)

[@极速男孩](https://github.com/ztlyyznf001)：本文系统解析了 C/C++ 运行时库的核心概念与实现机制。运行时库作为程序运行的基础支撑，封装了操作系统 API（如内存管理 malloc/ 文件操作 fopen）、提供标准库函数（字符串 / 数学运算），并管理程序生命周期（全局变量初始化 / 资源清理）。跨平台差异显著：Linux 依赖 glibc/libstdc++，Windows 通过 MSVC 运行时库实现，Android/iOS 则采用轻量化 Bionic/libc++。开发中需警惕多实例问题（静态链接导致内存堆冲突）和多版本兼容性问题（GLIBC/C++ABI 不匹配），解决方案包括统一动态链接、规范跨模块接口设计（避免传递 C++ 对象）及固化工具链版本。

### 🐕 [Detecting body poses in a live video feed](https://www.createwithswift.com/detecting-body-poses-in-a-live-video-feed/)

[@AidenRao](https://weibo.com/AidenRao)：这篇文章介绍了如何利用苹果的 Vision 框架在 SwiftUI 应用中实时检测视频流中的人体姿态。主要步骤包括：

1. 通过 `AVCaptureSession` 管理视频采集，处理权限申请，配置视频输入 / 输出格式，并调整画面方向以适应界面显示
2. 使用 `UIViewRepresentable` 协议将 `AVCaptureVideoPreviewLayer` 集成到 SwiftUI 视图中，实现实时画面展示
3. 创建 `PoseEstimationViewModel` 类处理视频帧，利用 Vision 的 `VNHumanBodyPoseRequest` 检测 19 个关键身体节点（如头、肩、肘、腕等），并建立关节连接关系（如肩到肘、膝到踝等）。
4. 通过检测到的身体坐标点动态绘制骨骼连线，最终实现在视频流上叠加姿态骨架图的效果
   
文章提供了完整的代码实现思路，适用于健身追踪、AR 等场景开发。

### 🐎 [Why I Avoid Group](https://chris.eidhof.nl/post/why-i-avoid-group/)

[@DylanYang](https://github.com/Dylan19Yang)：作者通过一系列的 Demo 向我们展示了 Group 目前存在的一些问题。官方文档上写着作用于 Group 的 modifier 会作用在 Group 内的每一个元素上，但实际在模拟器上的表现并非如此。作者猜测可能和渲染 SwiftUI 的根结点实质是一个 UIKit 的 view 有关。如果使用一个 VStack 包裹 Group，则它的表现又符合预期了。

### 🐎 [这篇 GPU 学习笔记，详细整理了其工作原理、编程模型和架构设计](https://mp.weixin.qq.com/s/IzsI_dzX6AxFnJGg8zewEw)

[@老驴](https://weibo.com/u/6090610445)：最近 AI 大火也让 nvidia 再次在风口浪尖烧，你有没有想过 GPU 到底是怎么工作的？它为什么在特定应用下这么快？和我们日常写的代码、性能优化有什么关系？

这篇文章用清晰的逻辑和大量实例，从 GPU 架构原理、并行执行模型到实际的 CUDA 编程，带你系统了解 GPU 背后的技术基础。即使你平时不写 CUDA，这些知识也能帮你更好地理解 Metal、CoreML 这些 Apple 平台下的 GPU 特性。

如果你是一名希望拓展技术广度的开发者，值得一读。

## 代码

### [FlowNavigation](https://github.com/magnuskahr/swiftui-flow-navigation)

[Announcing FlowNavigation](https://www.magnuskahr.dk/posts/2025/03/announcing-FlowNavigation/) 本文介绍了作者开发的一个名为 FlowNavigation 的 SwiftUI 框架。该框架旨在简化线性流程的定义和管理 , 如注册流程。作者提供了一个示例代码 , 展示如何使用该框架来定义一个包含电子邮件、密码和提交屏幕的流程。该框架目前还在测试阶段，作者希望能够获得社区反馈并继续完善。

## 内推

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

[上海] Soul App - 终端技术团队 - 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）
