# 老司机 iOS 周报 #261 | 2023-09-18

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

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

## 新闻

### [App Store submissions now open for the latest OS releases](https://developer.apple.com/news/?id=khzvxn8a)

Xcode 15 RC 版本已经正式发布，目前 AppStore 已经可以接受使用 RC 版 Xcode 构建的产物了，同时苹果预告将在 2024 年 4 月起禁止使用 Xcode 14 提交新的产物。

## 文章

### 🐎 [网易云音乐 Tango 低代码引擎正式开源！](https://mp.weixin.qq.com/s/X_F2JMY3rUm_mH-NP1FmEA)

[@Crazy](https://github.com/jiyan135960)：本文主要介绍了网易云开发的一款快速构建低代码平台的低代码设计器框架 Tango，该框架主要用于简化前端系统的搭建流程。相较于基于私有 Schema 的低代码搭建方案，Tango 的基于源码 AST 转换方式可以做到面向以源码为中心的应用搭建场景，并且具有更好的扩展性，原有组件亦可以无缝低成本接入。现今 Tango 已经开源，大家可以去 GitHub 直接查看源码以及应用文档。

### 🐎 [Symbolicating SwiftUI (and any Apple Framework)](https://www.emergetools.com/blog/posts/symbolicating-swiftui-and-any-apple-framework)

[@邦Ben](https://weibo.com/linwenbang)：Apple 为大多数系统框架（UIKit，AVFoundation 等）提供了符号，但其他如 SwiftUI，Combing 等则没有提供，那么依赖这个进行符号化的工具，这无法正确的显示。文中作者通过参考 Libc 中开源的代码 backtrace.c 中的实现，并且改进了方法进一步实现了获取完整符号的方法，在做相关内容的同学，可以参考一下。

### 🐎 [Understanding Container Background for Widget in iOS 17](https://swiftsenpai.com/development/widget-container-background/)

[@享耳先森](https://github.com/iblacksun)：在即将发布的 iOS 17 中，Apple 扩展了 Widget 的使用范围，为了适应这一变化，引入了 `containerBackground(for:alignment:content:)` 这一 API。如果使用 Xcode 15 编译项目而 Widget 没有适配这一 API 将会报错，文章解释了这一 API 的作用及用法。

### 🐢 [A Day in the Life of a SwiftUI View](https://chris.eidhof.nl/presentations/day-in-the-life/)
[@Smallfly](https://github.com/iostalks)：这篇文章是 SwiftConf.to 大会上的演讲稿。主题是关于作者所理解的 SwiftUI 背后的思维模式。作者通过演示如何将 SwiftUI 代码转化成视图树（View Tree）和渲染树（Render Tree）的方式来分享他的理解。

演讲内容包括以下要点：
- 如何将 SwiftUI 的代码转化成视图树和渲染树。
- 视图树是短暂的，而渲染树是持久的，它们之间的区别和重要性。
- 如何处理异步加载数据，以及在渲染树中使用任务（task）来实现数据加载。
- 对 SwiftUI 布局系统的讲解，包括如何使用 `resizable` 和 `aspectRatio` 来控制视图的大小和比例。
- 使用环境（Environment）和偏好设置（Preferences）在视图树和渲染树中传递信息的方法。

文章中提到了一些 SwiftUI 的内部工作原理和技巧，以及如何更好地理解和利用 SwiftUI 进行应用程序开发。这篇文章可能对希望深入了解 SwiftUI 的开发者有所帮助。

### 🐎 [我给 iOS 系统打了个补丁——修复 iOS 16 系统键盘重大 Crash](https://mp.weixin.qq.com/s/salgoWNYfqjhNwu30aHRnA)

[@JonyFang](https://github.com/JonyFang)：因键盘 Crash 问题，通过逆向分析定位到 iOS16 系统键盘 `tryLock` 时的系统 Bug，提供了一套可修复的方案。借助 `+(void)load` 方法在 App 启动时执行的特点实现对 `-[UIKeyboardTaskQueue tryLockWhenReadyForMainThread]` 方法的 Hook，仅在 iOS 16 的 Arm64 架构上生效。

## 工具

### [Introducing swiftly, a new Swift toolchain installer and manager](https://forums.swift.org/t/introducing-swiftly-a-new-swift-toolchain-installer-and-manager/67254)

[@kemchenj](https://kemchenj.github.io)：Swiftly 是一个 Swift 的版本管理器，类似于 nvm，rvm，rustup，可以用来快速安装各个版本的 toolchain 并且进行切换，作为 SSWG 的项目正在孵化当中，以后有望成为官方首选的 Swift 安装方式。

## 代码

### [SwiftDataKit](https://github.com/fatbobman/SwiftDataKit)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：SwiftDataKit 是 SwiftData 的扩展库，它使 SwiftData 开发人员可以访问 SwiftData 元素背后对应的 Core Data 对象。由于 SwiftData 框架功能尚不完善，开发人员仍需通过调用 Core Data 的方法来实现一些高级功能。使用 SwiftDataKit，可以让开发人员在某些场景下避免重复创建 Core Data 版本的 Data Model 和 Stack。更多详情可参阅 [SwiftDataKit：让您在 SwiftData 中使用 Core Data 的高级功能](https://www.fatbobman.com/posts/use-Core-Data-features-in-SwiftData-by-SwiftDataKit/)。


## 音视频

### 🐎 [Introducing a Memory-Safe Successor Language in Large C++ Code Bases - John McCall - CppNow 2023](https://www.youtube.com/watch?v=lgivCGdmFrw)

[@老峰](https://github.com/gesantung)：视频主要讲了 Apple 生态过去的编程语言(C/C++/Objective-C/Objective-C++)存在内存安全的问题，以及后继者 Swift 如何解决这些问题，为什么要使用 Swift 等。

### 🚧 [Swift TO](https://www.swiftconf.to/)
[@zvving](https://github.com/zvving)：Swift TO，一个源自加拿大的 iOS 社区组织，尽管面临严峻的运营挑战并[即将结束运营](https://www.swiftconf.to/swift-to-is-closing-down/)，但依旧保持开放性，将最近的技术分享视频公开，欢迎感兴趣的朋友通过视频参与交流学习。

## 内推

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

[北京] 百度网盘 - 基础架构/业务 - iOS/Android/FE

[上海/杭州/北京] TikTok - 短视频 - iOS/Android/TL

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

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

[广州] 微信公众号 - iOS

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

[上海 / 北京] MiniMax - iOS

[北京] 知乎 - 会员业务 - 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）
