# 老司机 iOS 周报 #260 | 2023-09-11

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

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

## 新手推荐

### 🐕 [Hidden feature: static properties](https://www.swiftwithvincent.com/blog/hidden-feature-static-properties)

[@极速男孩](https://github.com/ztlyyznf001)：Swift 的静态属性具有一项隐藏特性：它们是隐式懒加载的，只在首次访问时初始化。这意味着，即使应用中有许多静态属性，它们也不会在应用启动时全部初始化，从而优化性能。若尝试显式地用 lazy 关键字声明静态属性，Swift 会报错，因为静态属性已经是懒加载的。

## 文章

### 🐕 [C++ 知识体系总结：语言核心与代码工程](https://mp.weixin.qq.com/s/lQoH4UF36_zKrw-Jbp2ylw)
[@莲叔](https://github.com/aaaron7)：这篇文章初看下属于谁看了必然会收藏但大概率不会看的文章。但看完后又给我很不一样的体感，虽然文章较长而且涉及的点比较多，但并不是单纯追求大而全，而是围绕 C++ 一些常用的新特性进行了介绍，根据我的经验在现代 C++ 的项目里几乎都会用到里面介绍的特性，同时每个特性都包含示例代码帮忙理解，大幅提高了学习的效率。对于工作中需要和 C++ 打交道的同学来说是很不错的资料。

### 🐎 [The new Swift section in binaries built with Swift 5.9 and Xcode 15, \_\_TEXT/\_\_constg_swift](https://twitter.com/sond813/status/1699822345471541415)

[@kemchenj](https://kemchenj.github.io)：Swift 在运行时经常需要遍历查询类型的元信息，但 Swift 编译链接后的二进制产物里，类型的元信息是各自分散的，导致启动时会频繁触发 page fault，并且 CPU 缓存命中率也会下降。

在即将发布的 Swift 5.9 里，编译器会将这些信息集中存放到各自的 Section 里，改善前面提到的问题。

### 🐕 [一线大厂程序员的考公上岸心得](https://mp.weixin.qq.com/s/dlOEngLD150RaTkAlAVkww)

[@老驴](https://weibo.com/u/6090610445)：一篇和我们之前推荐的很不一样的文章，是一位之前在微软的 Edge 的同学，后来如何考公务员的访谈。在大家都不容易的时间里，算是比较有意思的经验分享。当然，这不代表老司机的立场，只是做一个分享，能让大家看到一些不一样的视角。

### 🐕 [Xcode 15 iOS 17 小组件适配必看：Widget needs to adopt container background](https://www.craft.me/s/UOcc5BqYFazbL2)

[@anotheren](https://github.com/anotheren)：在使用 Xcode 15 后，如果你的项目代码包括了小组件，那么就会收到 "Widget needs to adopt container background" 的提示，要求进行相关适配。本文介绍了相关适配的要点，推荐阅读。

### 🐕 [Develop and test OpticID for Vision Pro](https://blog.eidinger.info/develop-and-test-opticid-for-vision-pro)

[@EyreFree](https://github.com/EyreFree)：Optic ID 是一种全新的安全生物识别系统，用于对用户进行身份验证，它的调用方式和在 iOS App 中使用 FaceID 类似。在这篇博文中，作者解释了开发者应该如何利用 Optic ID 进行身份验证以及如何在 Vision Pro 模拟器中测试 OpticID，感兴趣的同学可以阅读原文进行了解。

### 🐕 [实战总结｜抽丝剥茧，记一次神奇的崩溃](https://mp.weixin.qq.com/s/vMlK7oIQH62VV6qHSPHnQQ)

[@xuyafei86](https://github.com/xiaofei86)：本文详细回放了一个崩溃案例的分析过程，感兴趣的同学可以阅读原文了解。
1. 回顾了 C++ 多态和类内存布局相关知识，了解原理后查看内存让我们看到了更多代码内部的细节。
2. 回顾了 pc 指针的含义并了解了更多 arm 异常处理机制，解释了一些日常认为理所当然的结论背后的原理。
3. 回顾了内存屏障相关知识，并构造了 demo 对理论分析进行了实践验证。


## 工具

### 🐎 [京东京喜 iOS 包体积分析工具](https://juejin.cn/post/7273740834201600063)
[@Damien](https://github.com/ZengyiMa)：一款用于分析 iOS IPA 包的脚本工具，使用此工具可以自动扫描发现可修复的包体积问题，同时可以生成包体积数据用于查看。工具京东京喜团队内部已经使用很长一段时间，希望可以帮助到更多的开发同学更加效率的优化包体积问题。

## 代码

### 🐎 [add a label to the outer loop and use break with the label](https://twitter.com/lee_kah_seng/status/1696795033033208151?s=43&t=Oi5pq1Y0PftkjDmJadkvxQ)

[@zoeGuo](https://github.com/zoeGuo)：在 Swift 中使用嵌套循环的时候，你可能会有这样的需求：同时跳出内部和外部的循环；这个时候就可以为外层循环添加一个标签，在需要 break 的时机，选择 break 这个标签。

## 内推

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

[杭州] 淘宝 - 终端平台 - iOS/Android/C++

[广州] 微信公众号 - iOS

[北京] 快手 - 本地生活 - iOS

[上海 / 北京] MiniMax - iOS

[广深] TikTok 直播 - 社交互动团队 - iOS/Android

[北京] 知乎 - 会员业务 - iOS

[上海] 扫描全能王 - iOS

[深圳] 手机 QQ - 终端架构 - iOS - T10/T11

具体信息请移步：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）
