# 老司机 iOS 周报 #269 | 2023-11-27

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

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

## 新闻

### 🐢 [Flutter 3.16 + Dart 3.2 发布](https://mp.weixin.qq.com/s/vbkhjPNboqK1oDy_J5pzeA)

[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 常规季度更新发布了，本次发布为 Flutter 3.16 + Dart 3.2; 一如既往，本次更新还是以稳定性和性能优化为主，其中值得关注的是 Android Impeller 和 Material 3 成为新的默认主题, 当然了在组件和工具链上也做出了不少改进和更新，感兴趣的同学可以在文中注意查看；[另一个值得关注的点是 Dart 3.2 发布，该版本在 Dart Web 和 Wasm 做了较多更新](https://mp.weixin.qq.com/s/UA5MQLzdf_ZPS56EdNLf2A)，从这里可以看到 Flutter 团队对于浏览器端的努力一直在持续，可预见的是 Flutter 在浏览器端的未来可期 

## 新手推荐

### 🐎 [Swift strings look identical but aren't](https://damian.fyi/swift/2023/11/13/swift-strings-look-identical-but-aren't.html)

[@极速男孩](https://github.com/ztlyyznf001)：这篇文章介绍了两个看起来相同的字符，因为当中包含一个 '\u{FEFF}' 字节顺序标记导致他们出现不相等的情况，作者用了 String 扩展和 'trimmingCharacters(in: .controlCharacters)' 的方式来移除这个标记。

## 文章

### 🌟 🐢 [What Every C Programmer Should Know About Undefined Behavior #1/3](https://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html) [#2/3](https://blog.llvm.org/2011/05/what-every-c-programmer-should-know_14.html) [#3/3](https://blog.llvm.org/2011/05/what-every-c-programmer-should-know_21.html)
[@Smallfly](https://github.com/iostalks)：这是探讨 C 系语言未定义行为的系列文章。在系列的第一部分中，作者解释了 C 语言中的未定义行为，并展示了一些案例，说明了它使 C 语言比「安全」语言更具性能的原因。在第二部分，探讨了未定义行为导致的令人惊讶的错误，以及许多程序员对 C 语言存在的一些广泛误解。在最后一部分，探讨了编译器在提供陷阱警告时面临的挑战，并讨论 LLVM 和 Clang 提供的一些功能和工具，以实现性能提升的同时减少一些意外情况发生。

### 🐕 [Debugging SwiftUI views: what caused that change?](https://www.avanderlee.com/swiftui/debugging-swiftui-views/)

[@Barney](https://github.com/BarneyZhaoooo)：本文介绍了调试 SwiftUI 的关键技巧。使用 Self._printChanges 或 Self._logChanges 静态方法可以帮助我们找到引起重绘的根本原因。将视图单一化简单化往往是排查复杂问题的关键，文章分下面五个步骤娓娓道来。

- **What is a dynamic SwiftUI View?**
- **The problem of a Massive SwiftUI View**
- **Using LLDB to debug a change**
- **Solving redraw issues in SwiftUI**
- **Debugging changes using code**

### 🐎 [Custom Traits and SwiftUI](https://useyourloaf.com/blog/custom-traits-and-swiftui/)

[@Damien](https://zengyima.github.com/)：本文主要讲述了在 iOS 17 中，开发者可以添加自定义 Traits 到 UIKit Traits 环境中，并与 SwiftUI 环境进行互操作。在 iOS 17 中，Traits 的处理方式发生了重大变化，Traits 现在可以从 UIScreen、UIWindowScene、UIViewController、UIView 等流向任何子视图控制器。此外，还介绍了如何创建一个自定义 Traits，并给出了一个实际的例子。

### 🐎 [Revealing and explaining package scores](https://blog.swiftpackageindex.com/posts/revealing-and-explaining-package-scores)

[@EyreFree](https://github.com/EyreFree)：这篇文章主要介绍了 Swift Package Index 中的一个新功能：Package 评分，并解释了这个分数是如何计算的。得分系统基于多个特征来评估软件包，包括：软件包是否被存档、是否拥有与 App Store 兼容的开源许可证、发布次数、Star 数量、依赖数量、最近活动、文档和贡献者数量、是否有测试代码和是否有 README 文档等，可以作为大家选择开源库的参考。

## 代码

### [MachOView](https://github.com/gdbinit/MachOView)
Mach-O 相信很多同学或多或少已经接触过或者有所了解，它是 Mach Object 文件格式的缩写，是 mac 以及 iOS 上的可执行文件。MachOView 这个工具可以快速查看 Math-O 格式的文件，简单易用，同时工具在今年迎来了 3.0 版本的大更新。对于经常需要分析静态库等文件的同学可以下载使用

## 内推

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