# 老司机 iOS 周报 #272 | 2023-12-18

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

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

## 文章

### 🐎 [Flutter 小技巧之 3.16 升级最坑 M3 默认适配技巧](https://mp.weixin.qq.com/s/SIEYjZn0gKNMCGlPeg1rGw)

[@Crazy](https://github.com/jiyan135960)：本文是一篇介绍如何在升级 Material 3 后，适配原有 Material 2 控件的文章，本文虽然读起来会很快，但是会为开发者减少大量的时间去解决系统级的适配问题。本文主要介绍了以下几个控件在 Material 3 升级后的变化，以及如何适配 Material 2 的方法。

- AppBar: 背景的颜色，icon 的颜色，字体的颜色，都会被修改。文章中介绍通过修改 AppBarTheme 的 backgroundColor 来设置背景颜色，然后在  AppBarTheme 里配置 iconTheme 来修改 icon 的颜色与大小，最后通过 titleTextStyle 来修改字体的大小。
- Card: 升级后的 Card 会在设置完颜色后仍然有浅蓝色的效果，文章中介绍通过在 ColorScheme 下设置  surfaceTint 为透明色就可以解决这个问题。
- FloatingActionButton: 升级后此控件变化极大，不仅颜色变化，就连形状也发生了变化。文章中介绍首先通过修改控件中 floatingActionButtonTheme 属性里面的 backgroundColor 与 shape 两个属性完成背景颜色与形状的修改，然后通过修改 floatingActionButtonTheme 的 foregroundColor 属性来修改 icon 的颜色。
- primarySwatch: 文章中提到如果之前使用了 primaryColorDark 和  primaryColorLight 作为配置，升级后会发生改变，只要在 ThemeData 中为 primarySwatch 参数赋值为 color as MaterialColor 即可解决。

### 🐢 [Hummer 引擎优化系列 - PlatformView 的演进历史与优化探索](https://mp.weixin.qq.com/s/R3UUlgEPVR909NB_Jz6o-w)

[@CrazyCoderShi](https://github.com/CrazyCoderShi): PlatformView 是 Flutter 中插入 Native 组件的唯一方式，自诞生以来经历了多次迭代和优化；本文由 U4 内核技术组分享，沿着 PlatformView 方案的演进历史，剖析各个方案的实现原理和优缺点，给出最佳实践，帮助读者理解和正确选择 PlatformView 的渲染模式；小编强烈推荐各位在用 Flutter 技术的同学详细阅读本文。

### 🐕 [SFSafariViewController in SwiftUI: Open webpages in-app](https://www.avanderlee.com/swiftui/sfsafariviewcontroller-open-webpages-in-app/)
[@享耳先森](https://github.com/iblacksun)：`SFSafariViewController` 常用于在 App 内打开外部链接，但目前并没有 `SwiftUI` 版本。本文深入浅出，开始使用 `UIViewRepresentable` 简单封装 UIKit 使其在 `SwiftUI` 可用，之后再结合 `View Modifier` 等特性优化。

### 🐕 [网易云音乐 RN 新架构升级实践](https://mp.weixin.qq.com/s/tAf0SnW2M7Sp0E72YLJP5w)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：本文介绍了网易云音乐从 ReactNative 0.33 版本到 0.70 版本的升级历程，以及新架构升级的背景和收益。随着 RN 作为主要跨端方案建设的推进，业务对页面打开效率和使用体验的要求越来越高，跨端使用场景进一步扩大受阻。经过对比新老架构的性能、Bundle 包大小、客户端包大小、内存占用等多角度数据，新架构 Hermes 引擎预编译后性能得到了提升显著。

## 工具

### 🐕 [Marin's Side Projects 2023](https://trycombine.com/posts/marin-side-projects-2023)

[@EyreFree](https://github.com/eyrefree)：这篇文章是 Marin 对自己 2023 年进行的几个业余项目的分享与总结。介绍了包括一个实时从项目源文件中追踪 `TODO:` 和 `FIXME:` 注释的问题追踪器 Breadcrumbs、可视化显示 `Package.swift` 的 PackageView、使用 Swift 并发进行解压的 Unxippity、基于 Markdown 的应用程序演示制作工具 MarkWalkthrough、半 Markdown 编辑器半开发者控制台的 MarkPlayground、将文档作为 Markdown 文件处理的 PDFDoc 以及读取 Mac 控制台日志的 LogRider 在内的一些列应用程序，并提供了部分项目的代码，感兴趣的朋友可以看看。

### 🐕 [Flutter 上了 Apple 第三方重大列表，2024 春季 iOS 的隐私清单究竟是什么](https://mp.weixin.qq.com/s/Z5rc2ud3hJ2k7hN7EItyPA)

[@极速男孩](https://github.com/ztlyyznf001)：苹果在 2023 年 WWDC 后宣布的隐私政策更新，对 Flutter 产生了重大影响。这些更新引入了第三方 SDK 的隐私清单，目的是提高数据收集和使用的透明度。Flutter 及其不少插件被苹果列为具有重大隐私影响，引发了对其数据实践的关注。这些更新要求开发者提交详细的隐私报告，包括数据收集类型、与用户的关联、跟踪用途和收集原因。此外，它们还要求声明跟踪域名，特别是在应用跟踪透明度 (ATT) 框架下，并要求对第三方 SDK 进行签名以防篡改。这些发展为 Flutter 开发者带来了挑战，特别是在适应 iOS 17 方面。

## 代码

### [MLX: An array framework for Apple Silicon (Made by Apple)](https://github.com/ml-explore/mlx)

[@老驴](https://weibo.com/u/6090610445)：Apple 也来赶最近的 AI 浪潮了。 Apple 发布了一个 为 Apple Silicon 特别优化的 Machine Learning 的框架，API 参照了 Numpy 和 PyTorch 进行设计，甚至写范例 port 了 LLaMA 这些热门的大语言模型。如果你最近也在玩大模型，尤其是想部署在本地的话，一起来学习下 Apple 的这个框架吧。

### [Async Algorithms 1.0 Released](https://github.com/apple/swift-async-algorithms)

[@kemchenj](https://kemchenj.github.ion/)：异步编程在避免堵塞的同时让我们失去了 control flow，但相对应的在异步的极致 Rx 里，我们也获得了 throttle/combineLatest 这些时间魔法。

Swift 新加入的 async/await 消除了同步编程和异步编程之间的差异，让我们可以在异步编程里也用上熟悉的 control flow，并且我们也没有失去时间魔法，它以 AsyncSequence 的形式存在于 Swift Concurrency 的世界里。

但 throttle/combineLatest 这些上层的操作符并没有直接在标准库里实现，而是在 Async Algorithms 这个库里探索实现，现在这个库发布了 1.0 版本宣布 API 的稳定。

## 内推

重新开始更新「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）
