# 老司机 iOS 周报 #278 | 2024-02-26

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

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

## 新闻

### [App Store Connect upload requirement starts April 29](https://developer.apple.com/news/?id=fxu2qp7b)

预计在 4 月 29 日，App Store Connect 就将限制必须使用 >= Xcode 15.0 进行提交，并支持最新的系统。还未升级的同学们需要尽快切换并进行适配啦。

### 🐢 [Flutter 3.19.0 系列更新](https://mp.weixin.qq.com/s/JRdT4vJutvNZ66uqqjYEPg)

[@CrazyCoderShi](https://github.com/CrazyCoderShi): 国内新年假期期间 Flutter 团队发布了 2024 一季度的更新：Flutter 3.19.0 ；按照惯例随着一起发布的还有 Dart 3.3 ；此次更新除了功能迭代、性能调优、工具优化之外，有几个点值得开发同学们着重关注：

- Gemini Dart SDK: 可以更方便地让 Dart 开发人员在 App 里集成 LLM 的 AI 能力
- Impeller Android Preview: 意味着 Flutter 彻底抛弃 Skia 的进程迈出了很大一步
- 弃用 Window 7 & 8，弃用 iOS 11 以前的版本
- Dart 对于 JS interoperably 支持增强
- Dart Macros 支持

其他相关博文：
- [Flutter 3.19.0 ReleaseNote](https://medium.com/flutter/whats-new-in-flutter-3-19-58b1aae242d2)
- [Dart 3.3](https://mp.weixin.qq.com/s?__biz=Mzg3NTA3MDIxOA==&mid=2247491174&idx=2&sn=b6c236e48e2f5d0032387293f7e90bb6&chksm=cec64803f9b1c1159f6d720883df2ff202ab52cb8820682a65bc4ce6aba1a9488f33f18fae61&cur_album_id=1968809591672979459&scene=189#wechat_redirect)
- [2024 Impeller：快速了解 Flutter 的渲染引擎的优势](https://mp.weixin.qq.com/s?__biz=Mzg3NTA3MDIxOA==&mid=2247491190&idx=1&sn=dcb726e2ace120fb2285e82a5befb007&chksm=cfbf4d3126192986e2bb5255ee55f4b5fff1a3e2949b15321b3ea264929aedec30dc76fda824&scene=132&exptype=timeline_recommend_article_extendread_samebiz&show_related_article=1&subscene=189&scene=132#wechat_redirect)
- [Flutter 2024 路线规划](https://mp.weixin.qq.com/s?__biz=Mzg3NTA3MDIxOA==&mid=2247491174&idx=1&sn=5ceb5e8fce90f11dc051a9305d4ed109&chksm=cec64803f9b1c1154cd1a684a34d03e0189e9e85bbdf8f67983ea3940c4ecf8dd062de1347ac&cur_album_id=1968809591672979459&scene=189#wechat_redirect)
- [Dart 宏（Macros）编程开始支持](https://mp.weixin.qq.com/s/WoamljZJeNN9huMdIb_Ycw)

## 文章

### 🐕 [通过 Headphone Motion 访问 AirPods 的头部跟踪数据](https://github.com/LLLLLayer/Headphone-Motion)

[@EyreFree](https://github.com/EyreFree)：本文介绍了如何利用 Core Motion 框架访问 AirPods 的头部跟踪数据。介绍了在 iOS 应用中如何设置和获取用户授权，以及如何通过 CMHeadphoneMotionManager 类开始和停止设备运动数据更新，接收头部跟踪数据，并通过 CMDeviceMotion 类解析这些数据，最后说明了如何处理连接和断开耳机的事件。并且提供了完整 Demo 工程，推荐感兴趣的同学阅读。

### 🐕 [On-device ML research with MLX and Swift](https://www.swift.org/blog/mlx-swift/)

[@JonyFang](https://github.com/JonyFang): Swift 编程语言因其易用性和高性能，配合 MLX 库，为 Apple 芯片上的机器学习研究提供了强大支持。MLX Swift 将 MLX 扩展到了 Swift 语言，简化了机器学习在 Apple 芯片上进行实验的复杂度，并提供了相应的 Swift API、高级的神经网络和优化器包，以及文本生成和 MNIST 训练的示例。所有这些都在 MIT 许可下发布，旨在利用 Swift 的高性能和易用性，为机器学习研究者提供一个友好的实验框架。文中提供了文档和示例，API 覆盖的能力可以具体看下文档，感兴趣可以研究下 Examples ～

### 🐕 [Code Injection with Dyld Interposing](https://www.emergetools.com/blog/posts/DyldInterposing)

[@Cooper Chen](https://github.com/cjlcooper)：众所周知 Objective-C 运行时的动态性可用于多种用途，例如我们熟知的 Method swizzling，然而 Method Swizzling 不能用于 C/C++ 函数的交换，这对于需要在 C/C++ 下进行逆向的时候并不能如人所愿，本篇文章介绍如何使用 dyld 动态绑定的特性进行插入方法，从而达到对 C/C++ 语言进行替换绑定的目的，同时也建议与 Fishhook 进行异同点比较来达到最佳的阅读体验。

### 🐎 [The SwiftUI Field Guide](https://www.swiftuifieldguide.com)

[@zoeGuo](https://github.com/zoeGuo)：这个网站直观地解释了 SwiftUI 布局系统的工作原理。可以通过改变属性或参数数值动态看到布局上的变化，更有利于理解 SwiftUI 参数、属性的含义。 网站目前更新了 [Alignment](https://www.swiftuifieldguide.com/layout/alignment)、[HStack](https://www.swiftuifieldguide.com/layout/hstack)、[Aspect Ratio](https://www.swiftuifieldguide.com/layout/aspect-ratio) 和 [Padding](https://www.swiftuifieldguide.com/layout/padding) 四个模块，推荐给正在学习 SwiftUI 的读者。

### 🐕 [云音乐 RN 新架构升级之 iOS 灰度方案](https://mp.weixin.qq.com/s/jZ3wfbFf2xey8aTK16MU4A)

[@Smallfly](https://github.com/iostalks)：文章主要介绍了网易云音乐在升级 React Native（RN）架构时，iOS 侧采用的灰度方案。阐述了实现渐进式升级的思路和挑战，包括静态链接和动态链接两种方案的优缺点，以及他们最终采用的双动态库方案。这个方案通过引入一个中间层（NEReactNative）来解决静态链接过程中的符号引用问题，并在运行时动态加载新旧版本的 RN 代码。

文章适合对 React Native 架构升级、iOS 灰度发布策略、以及 Objective-C 运行时特性感兴趣的资深 iOS 开发者阅读。

## 代码

### [armhf-swift-toolchain](https://github.com/CmST0us/armhf-swift-toolchain)

[@kemchenj](https://kemchenj.github.ion/)：
1. 可以学习如何使用源码编译 Swift
2. 学习如何使用 SPM 进行交叉编译
3. 对嵌入式 32 位 Linux 平台，可以使用 Swift 编码。例如作者已在 fpga 上运行 Swift [Run Swift On Zynq petalinux](https://forums.swift.org/t/introducing-my-armhf-swift-5-9-toolchiain/69524/2)

由：[CmST0us](https://github.com/CmST0us) 自荐

## 内推

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

具体信息请移步：https://www.yuque.com/iosalliance/article/bhutav 进行查看（如有招聘需求请联系 iTDriverr）

## 关注我们

我们是「老司机技术周报」，一个持续追求精品 iOS 内容的技术公众号，欢迎关注。

**关注有礼，关注【老司机技术周报】，回复「2023」，领取 2023 及往年内参**

![](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）
