# 老司机 iOS 周报 #231 | 2023-02-06

![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.7 稳定版发布](https://mp.weixin.qq.com/s/DOUELDqCD5MlgGfW7bMpEw)

[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 3.7 稳定版本发布，为开发者带来了不少新功能的同时也对原有功能做了不少优化和改进.

- 新功能
  - 增强对 Material 3 的支持
  - 菜单栏和级联菜单
  - Impeller 预览版在稳定版渠道发布
  - 自定义上下文菜单
  - 后台 isolate
  - 文本放大镜
  - 废弃 Bitcode
  - iOS 平台视图应用 BackdropFilter
  - 将 toImageSync 新增至 dart:ui 中
- 工具 & 工程
  - 开发者工具 DevTools 的更新
  - iOS 发布校验
  - 字体资源支持热重载
  - 放弃对 macOS 10.11 到 10.13 版本的支持
  - 插件代码迁移至 Swift
  - 国际化工具和文档
- 优化 & 改进
  - 内存管理优化
  - 滑动优化
  - 全局的选择优化
  - 自定义着色器支持的改进
  - 减少 iOS 设备上动画效果的卡顿

### [AFNetworking 官方宣布正式弃用](https://github.com/AFNetworking/AFNetworking)

AFNetworking 终于也到了寿终正寝的一天，虽然十分不舍，但拥抱 Swift 是大势所趋，推荐大家可以切换到 Alamofire 继续进行 iOS 开发。

##  Developer - 设计开发加速器

[探索 iPad 最新技术](https://developer.apple.com/events/view/)

探索新近发布的全新 iPad 和 iPad Pro 的最新特性。很多 App 已经充分利用了 iPad 硬件、iPadOS 和 Apple Pencil 的能力，并开发了出色的 App 体验。本次课程将通过一系列创新性 App 的演示，带领您充分了解 iPad 最新技术特性，学习如何利用功能强大的 API 来让您的 App 在 iPad 的体验更上一层楼。报名时间截止 2 月 15 日。

## 文章

### 🌟 🐢 [通向 AGI 之路：大型语言模型（LLM）技术精要](https://zhuanlan.zhihu.com/p/597586623)

[@xiaofei86](https://github.com/xiaofei86)：“ChatGPT 出现后惊喜或惊醒了很多人。惊喜是因为没想到大型语言模型（LLM,Large Language Model）效果能好成这样；惊醒是顿悟到我们对 LLM 的认知及发展理念，距离世界最先进的想法，差得有点远。我属于既惊喜又惊醒的那一批，也是典型的中国人，中国人善于自我反思，于是开始反思，而这篇文章正是反思的结果。”

### 🐢 [序列化和反序列化](https://tech.meituan.com/2015/02/26/serialization-vs-deserialization.html)

[@Cooper Chen](https://github.com/cjlcooper)：在大型软件工程中，为了实现与上下游各系统进行良好的对接，序列化和反序列化的选型往往是我们做系统设计的一个重要考虑因素。本文针对这个问题在多个角度进行分析和讲解，并对比了当前流行的几种序列化协议，给出了有价值的选型建议。

### 🐢 [OC 局部变量未初始化的危险性](https://juejin.cn/post/7187664196492853308)

[@莲叔](https://github.com/aaaron7)：千万不要被文章的名字骗了，文章的内容比标题所描述的详实得多。变量未初始化导致的问题几乎是所有程序员的老朋友了，毕竟稳定 bug 并不可怕，就怕他一会儿有一会儿有没有。未初始化变量的行为会随着语言、编译器、系统架构的不同而不同，经常会导致非常隐蔽的问题。这篇文章从一次 OC 遇到的未初始化变量问题开始，分析了在ARM架构中，OC 对象和其他数据类型在不初始化的时候的表现, 并通过汇编拆解了表象背后的原因，相信你看完本文对于这个问题会有很多的收获。

### 🐕 [BSBackTracelogger 学习笔记](https://juejin.cn/post/6910791727670362125)

[@AidenRao](https://weibo.com/AidenRao)：于一个 app 来说，检测主线程的卡顿是性能优化的一个重点，而其中一个重要的操作就是当在子线程监控到主线程卡顿时需要抓取主线程的堆栈来进行后续的操作，这篇文章主要来探索一下 BSBacktraceLogger 的原理，能增加对于操作系统的一些认识以及对于 mach-o 文件的了解。

### 🐕 [How To Speed Up Swift By Ordering Conformances](https://www.emergetools.com/blog/posts/how-order-files-speed-up-protocols)

[@zvving](https://github.com/zvving)：Swift 类型转换涉及大量类型一致性检查，运行性能一致为开发者诟病。文章结合 iOS16 对一致性检查的改进，通过二进制重排来提升小部分场景的启动性能。受限于优化针对低系统版本及类型转换代码，整体启动时间优化不会太显著，但作者围绕 iOS16 公开新方案结合经验进一步整合的思路值得参考。

### 🐕 [Swift 之 struct 二进制大小分析](https://juejin.cn/post/7191406877819797561)

[@J_Knight_](https://github.com/knightsj)：本文来自京喜开发团队,介绍了 struct 对比 Class的一些优劣势，重点分析对包体积带来的影响及规避措施。文章首先从安全性，效率性和内存泄漏这三个方面对比了 class 类型和 struct 类型的区别。然后重点分享了 struct 类型的内存问题以及对包体积大小的影响问题。最后介绍了如何平衡安全，效率，内存，二进制大小这几方面的方法。

### 🐕 [百度APP iOS端内存优化-原理篇](https://mp.weixin.qq.com/s/6_FGFU7-X7URMms6-ucyZQ)

[@老峰](https://github.com/gesantung)：本文介绍了 Mach 虚拟内存的特点包括内存报警、Jetsam机制、 内存压缩技术；以及内存管理的数据结构和Mach内核提供的内存操作接口等基础概念，同时对 OC 内存分配核心函数 alloc 做了源码分析，此外对iOS 端内存报警机制做了详细的源码分析涉及整体报警流程，系统初始化，报警线程等。

### 🐕 [69 篇文章带你系统性的学习音视频开发](https://mp.weixin.qq.com/s/oFXvXb0Lr_wETmHn7GqJxA)

[@JonyFang](https://github.com/jonyfang): 这是一篇 iOS、Android 客户端开发同学系统性学习音视频开发知识的指南，其中索引的几十篇文章，覆盖了音视频基础知识、工具使用、工程示例、实战经验等主题，这些文章基本上构成了入门音视频开发并做一些功能实现和指标优化工作所需要的知识框架。

## 代码

### [dotdrop](https://github.com/deadc0de6/dotdrop)

[@Smallfly](https://github.com/iostalks)：用户根目录下的隐藏文件如果不小心被覆写，将无法撤销。`dotdrop` 提供了点文件的备份能力，并支持在不同主机上自定义同步。

### [Docker-OSX](https://github.com/sickcodes/Docker-OSX)

[@红纸](https://github.com/nianran)：Docker-OSX 是一个使用 Docker 容器在 OSX-KVM 上安装 macOS 的项目。它提供了 macOS Big Sur、Monterey、Catalina 等多个版本的镜像。你可以使用其在 Windows、Linux 上做一些安全研究。

### [AttributedString Builder](https://github.com/objcio/attributed-string-builder)

[@zoeGuo](https://github.com/zoeGuo)：AttributedString Builder 是一个可以将不同类型来源转化为 AttributedString 的 Swift 实现的开源工具，可以支持的类型有：普通格式的文本、Markdown、图片、SwiftUI Views、表格和 PDF 文档。实现思路值得学习～

## 摸鱼周报

[@摸鱼周报 #82](https://mp.weixin.qq.com/s/ck4Jn4Cq-yOs_mjAO-WacA)：第 82 期摸鱼周报，一起来看下本期概要：

* 本期话题：设计开发加速器线下活动：女性开发者社区日
* 本周学习：Python 如何调用 Swift 程序
* 内容推荐：涵盖现代 SwiftUI 编程探讨、可变视图、NSTimer、Swift Charts 等方面的文章推荐
* 摸一下鱼：去中心化社交软件 Damus；2022 年最后欢迎的 Chrome 插件；一款通过工作流驱动提效的办公工具 monday

## 内推

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

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

## 关注我们

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

**关注有礼，关注【老司机技术周报】，回复「2021」，领取 2017/2018/2019/2020 内参**

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