# 老司机 iOS 周报 #254 | 2023-07-31

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

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

## 新闻

### [List of APIs that require declared reasons now available ](https://developer.apple.com/news/?id=z6fu1dcu)

[@zoeGuo](https://github.com/zoeGuo)：苹果在 WWDC23 上发布了应用程序（包括 SDK）的新隐私政策，并有 [Get started with privacy manifests](https://developer.apple.com/videos/play/wwdc2023/10060/) 的单独专题。7 月 27 日苹果发布了此则新闻，称：2023 年秋季开始，如果新上传的应用程序中使用了没有提供隐私清单的相关 API，那么你将会收到一封邮件通知；而从 2024 年春季开始，隐私清单会变成一个强制要求。涉及到的 API 以及使用原因可参考：[View list of APIs and approved reasons](https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api)，如果使用原因未在列表中列出也可直接提交具体使用理由：[Submit a request for a new approved reason](https://developer.apple.com/contact/request/privacy-manifest-reason/)。

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

###  [Apple Vision Pro 开发者实验室](https://developer.apple.com/cn/visionos/labs/)

[@老峰](https://github.com/gesan)：Apple 分别在库比蒂诺、伦敦、慕尼黑、上海、新加坡和东京设立了 Vision Pro 开发者实验室。开发者可申请参加为期一天的开发者实验室，体验在 Vision Pro 上运行的 visionOS、iPadOS 或 iOS App，并在 Apple 的支持下测试并优化你的 App 和游戏。

## [《WWDC23 内参》](https://xiaozhuanlan.com/wwdc23)

本周我们又更新了 5 篇内参，每篇质量都非常高，欢迎大家阅读。

> 关注老司机技术公众号，回复「2023」，领取 2023 及往年内参

### 🌟 [WWDC23 10117 - App Store Connect 的新特性](https://xiaozhuanlan.com/topic/5304186279)

@iHTCboy：本文介绍了 App Store Connect 的新特性，包括隐私保护、新增的数据类型、按地区预购、产品页优化和通过 API 实现自动化等方面。其中，仅限内部测试人员访问的 TestFlight 测试更早安全可控；按地区预购可以为现有 App 拓展新的市场；通过 API 实现自动化流程以节省时间。最后建议开发者尽早尝试新功能，优化产品页面，激发用户的兴趣，获取更多用户。

### 🌟 [WWDC23 10080 - 使用 RealityKit 构建空间体验](https://xiaozhuanlan.com/topic/8296735401)

@郭介騵：本文会介绍如何使用 RealityKit 框架中的 Entities 和 Component 在你的 visionOS 应用中玩转 3D 模型，以及全新推出的 RealityView，结合 RealityKit 3D 能力和 SwiftUI 沉浸式空间，带给用户前所未有的体验。

### 🌟 [WWDC23 10165 - What's new in Xcode 15](https://xiaozhuanlan.com/topic/4731268095)

@Noah：工欲善其事，必先利其器，Xcode 是每个 iOS 开发者必备的开发工具，因此每年的 Xcode 更新都与我们息息相关。本文主要从 Xcode 15 功能、性能上的更新与优化入手，辅以 Demo 演示，分享 Xcode 15 让人振奋的更新。本文将从智能、简洁、高效、其他功能更新以及开发者注意事项这五个角度详述 Xcode 15 更新点，相信通过对这些更新点的了解，能够让大家在日常的开发工作中使用 Xcode 更游刃有余。

### 🌟 [WWDC23 10141 - App Store server API 新特性](https://xiaozhuanlan.com/topic/6725091438)

@yt：本文对 WWDC23 在 App Store Server API 提供的新特性进行梳理总结，并提供迁移到新的 App Store Server API 的升级指引，无论你是目前在使用 App Store Receipts 的 verifyReceipt 还是已经升级到 App Store Server API，相信本文都能给到你一些帮助。

### 🌟 [WWDC23 10119 - 在 Safari 上开发浏览器插件](https://xiaozhuanlan.com/topic/3290654871)

@Gareth Ng：本文在介绍 WWDC 2023 关于 Safari Web Extension 的同时，也介绍了 Safari Web Extension 从 2020 年开始的更新和发展.

## 新手推荐

### 🌟 [Flutter 的线程模型和异步原理](https://mp.weixin.qq.com/s/XvVD-yG79x8KX1U5LJgMvg)

[@CrazyCoderShi](https://github.com/CrazyCoderShi): 做 Flutter 应用开发鲜少有像 Native 那样遇到各种多线程或者多进程的问题，这跟 Dart 语言使用 event-loop 机制有关，但实际上在 Flutter 体系下是有类线程能力的，那就是 isolate, isolate 与 Native 线程或者进程有相似之处，但也有不少差异点；本文由搜狐技术团队产出，详细为大家讲解了 isolate 的方方面面，同样延伸到了 Flutter 各类异步机制的原理 : event-loop、async/await、Future. 称得上是一篇干货满满的科普以及进阶的好文，小编强烈推荐正在使用 Flutter 的同学跟着学习或复习一遍.

## 文章

### 🐕 🌟 [Precompiled headers](https://maskray.me/blog/2023-07-16-precompiled-headers)

[@Leo](https://github.com/leomobiledeveloper)：C/C++ 的工程可以用 precompiled headers 来提升编译速度。即使后来 C++ modules 出现了，precompiled headers 仍然有很多应用的场景。本文是一片关于 precompiled headers 的优秀文章，详细讲解了 pch 的生成、使用、性能优化等方方面面，讲解的非常详细，推荐阅读。

### 🐢 [Swift Package Plugins 初探](https://mp.weixin.qq.com/s/US6_4Yvs_XnUF1gELYiN6g)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：本文是 Swift Package 新特性 Package plugins 的介绍文章。Package plugins 可以做很多事情，比如代码格式化、代码扫描、自动生成多语言文件等。通过本文介绍什么是 Package plugins？Package plugins 能做什么？Package plugins 怎么用？让你对 Swift Package plugins 有个具体了解，可以上手开发自己的 Swift Package plugins。

### 🐕 [Building Peak](https://harshil.net/blog/building-peak)

[@极速男孩](https://github.com/ztlyyznf001)："Building Peak"是一篇揭示 Peak 应用开发背后的博客。作者使用 SwiftUI 和 The Composable Architecture (TCA) 构建应用，设计了各种主题并混合使用了标准和自定义 UI 。应用中加入了一些有趣的元素，如 "jiggle mode" 和 "Slide to Delete/Restore" UI。为了简化开发流程，作者创建了三个辅助应用：PeakBuilder（自动化上传到 TestFlight）、PeakThemer（在设备上设计主题）和 PeakSnapshotter（生成宣传艺术和 App Store 截图）。

## 工具

### 🐎  [asciiflow](https://asciiflow.com/#/)

[@水水](https://www.xuyanlan.com/)：这个工具可以绘制简单的流程图，然后选中图形即可粘贴到你想要复制到的代码注释里，喜欢这种注释风格的读者们可以尝试下哦 ~

## 代码

### [UIGraphicsBeginImageContextWithOptions Deprecated](https://github.com/SwiftOldDriver/iOS-Weekly/issues/4114)

[@Smallfly](https://github.com/iostalks)：`UIGraphicsBeginImageContextWithOptions` && `UIGraphicsEndImageContext` 图片绘制 API 在 iOS 17 上标记为废弃，在 Xcode beta 5 若绘制图片的 `width` 或 `height` 意外为零会触发 Assert，非零 size 暂时不受影响。建议尽快替换为最新的 `UIGraphicsImageRenderer` API。

### 🐕 [A collection of Metal Shaders](https://github.com/rafunderscore/metallurgy)

[@Cooper Chen](https://github.com/cjlcooper)：Metallurgy 是一个展示如何在 SwiftUI 上使用 Metal 的开源项目，通过这个项目可以更好的学习和了解 Metal 开发相关内容以及如何与 SwiftUI 结合，工程中着重对 Metal 的着色器部分进行了详细的说明，通过阅读代码可以了解着色器如何传递数据到视图并展示给用户，能够快速帮助开发者更多地了解 Metal 以及如何在 SwiftUI 中使用它。

## 内推

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

[北京] - 百度网盘 iOS/Android/FE/Server 研发工程师

[广州] 微信支付 - 客户端开发 - iOS/Android

[上海] B 站 - iOS 开发

[上海] 百度输入法 - 客户端开发 - 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）
