# 老司机 iOS 周报 #267 | 2023-11-13

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

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

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

### [Apple Vision Pro 挑战赛](https://developer.apple.com/events/view/98ZM6WUVR4/dashboard)

挑战赛地点在上海，分为两场，分别是 11 月 21、22 日，12 月 5、6 日，还没有亲自体验过 Vision Pro 的同学可以报名尝试参加，苹果会培训 空间计算 相关的知识。

## 文章

### 🐢 [深入浅出 MachO](https://evilpan.com/2020/09/06/macho-inside-out/#mach-o-101)

[@JonyFang](https://github.com/JonyFang): 本文通过对 MachO 文件的文件格式研究，介绍了 MacOS 和 iOS 中可执行文件的加载过程，从内核中的处理一直到动态连接器 dyld 的代码分析。可以看出 MachO 与 ELF 相比实现方式各有优势，但是在内核中原生增加了对代码的签名和加密，其实 ELF 也很容易实现类似的功能，但开放系统需要更多考虑兼容性的问题，不像苹果可以大刀阔斧的改动。对于 MachO 的深入理解其实也有助于日常的相关优化，比如 Apple Store 的加密实现以及代码签名的大致原理，还有针对 dyld_cache 的处理等，其中每一项都值得去深入挖掘。

### 🐎 [Calculating a Smooth Clock Hands Animation](https://david-smith.org/blog/2023/11/06/design-notes-46/)

[@Smallfly](https://github.com/iostalks)：这篇文章分享了作者在 Widgetsmith 应用中解决时钟指针旋转角度计算问题的经历。开始是发现在 iOS17 下旋转动画问题，于是进行了多次调整，尝试通过考虑每天的开始角度和连续旋转的方案，不过依然存在问题。最终，作者采用了一种基于天数计算的方法，考虑了每天时钟指针的完整旋转次数，并通过测试验证了这一解决方案的有效性。作者提供了方案的 Demo，有相关需求的读者不妨一读。

### 🐕 [Bad practice: not using multiline strings](https://www.swiftwithvincent.com/blog/bad-practice-not-using-multiline-strings)

[@Barney](https://github.com/BarneyZhaoooo)：本次推荐是一篇博客，简单介绍了 Swift 对多行字符串的支持，尽量避免主动在字符串中加入 \ 使得代码越来越难以维护。文章浅显易懂还附带视频，一分钟时间就可以掌握一个小知识，值得一看。

### 🐕 [iOS Crash 治理：淘宝 VisionKitCore 问题修复](https://mp.weixin.qq.com/s/pmnrDbIeueGS_7Sck-83qQ)

[@Cooper Chen](https://github.com/cjlcooper)：本文详细介绍了手淘技术团队定位 iOS 16.0 ～ iOS 16.2 WKWebView 的系统 bug 的过程，文章详细介绍了如何通过堆栈特征分析、版本对比等方式进行问题原因分析，到最终提出了详细的解决方案，并进行线上验证的过程，其中涉及的 Crash 排查思路值得开发者学习和借鉴。

### 🐕 [iOS libMalloc 源码分析](https://juejin.cn/post/7290817530415775804)

[@老峰](https://github.com/GesanTung)：libMalloc 作为内存分配器，研究相关机制，对于理解操作系统内存管理有较大价值。本文作者针对 iOS 底层堆内存分配器 libMalloc 的开源版本（libmalloc-409.40.6）结合源码分析了 NanoZone、ScalableZone(tiny、small、medium、large )不同的内存机制。

### 🐕 [Progress toward the Swift 6 language mode](https://forums.swift.org/t/progress-toward-the-swift-6-language-mode/68315)

[@AidenRao](https://weibo.com/AidenRao)：该文章介绍了 Swift 6 的发展和计划，目前的重点在于默认情况下避免数据竞争。[逐步采用即将到来的语言](https://github.com/apple/swift-evolution/blob/main/proposals/0362-piecemeal-future-features.md) 对于迁移到 Swift 6 至关重要：可以一次启用一项即将推出的功能，以逐步将代码库迁移到 Swift 6。

### 🐎 [Things I wish someone would have told me about configuring VSCode](https://www.bryanbraun.com/2023/08/10/things-i-wish-someone-would-have-told-me-about-configuring-vscode/)

[@anotheren](https://github.com/anotheren)：本文介绍了一些 VSCode 设置的小技巧，包括：
* 使用 `.gitignore_global` 来全局忽略 `.vscode` 文件夹；
* 工作区级别的插件设置；
* 内建终端的使用；

推荐使用 VSCode 的同学一看。

### 🐎 [Hierarchical background styles in SwiftUI](https://nilcoalescing.com/blog/HierarchicalBackgroundStyles/)

[@Damien](https://github.com/ZengyiMa)：本文内容主要讲述了如何在 SwiftUI 中获取和使用系统背景颜色。在 iOS 17 之前，我们通常需要从 UIColor 转换来获取这些颜色。但从 iOS 17 开始，可以直接通过 ShapeStyle 的实例来获取，例如 secondary，tertiary 等属性。这些背景颜色取决于当前的操作系统和颜色方案（启用了浅色或深色模式）。

### 🐎 [Why Curiosity Is Better Than Being Smart?](https://durmonski.com/life-advice/curiosity-is-better-than-being-smart/)

[@水水](https://www.xuyanlan.com/)：为什么好奇心比聪明更重要？这篇文章作者从自己出发来告诉读者为什么好奇心很重要，聪明人的思维过程是怎样的、好奇心为什么可以让人变聪明甚至可以变的更聪明、以及如何提高好奇心。好奇的读者可以看看本文哦 ~

## 开源库

### 🌟 [Grape](https://github.com/li3zhen1/Grape)

[@Leo](https://github.com/leomobiledeveloper)：一款 swift 编写的支持力模拟和可视化绘制的开源库，兼容 iOS/macOS/vision OS/watch OS. 开发者可以直接利用可视化能力绘制 Force Directed Graph（力导向图），也可以用力模拟模块来自定义实现一些能力。

## 音视频

### [NSSpain XI (2023)](https://vimeo.com/showcase/10672108)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：NSSpain 是一个知名的 iOS 开发者会议，在 NSSpain XI (2023) 中，涵盖了包括应用程序设计、性能优化、新的开发工具、Swift 编程语言的最新进展以及与 Apple 生态系统相关的多个主题，这个会议为开发者提供了与同行建立联系和交流的绝佳机会。

## 内推

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