# 老司机 iOS 周报 #240 | 2023-04-10

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

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

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

### [SwiftUI 技术沙龙（上海站）](https://developer.apple.com/events/view/6DF4375B6R/dashboard)

本次活动将在上海线下举办，在活动中你可以学习 SwiftUI 并与 SwiftUI 开发者社区建立联系。SwiftUI 借助 Swift 的强大功能，能帮助你用极少的代码在所有的 Apple 平台上构建外观精美的 App。我们将分享 SwiftUI 理念的核心原则，还会邀请多位社区内活跃开发者和大家分享 SwiftUI 实践经验。现在就加入我们，共同组建 SwiftUI 开发者社区吧！

### [线上讲座：在你的 iPad App 中支持外接键盘](https://developer.apple.com/events/view/AS7D4BR8Y6/dashboard)

通过熟悉和更具触感的体验，外接键盘可以使你的 iPad App 更易于使用，帮助用户更快地完成各种操作。此次课程中，你将学习如何在你的 iPad App 中支持键盘快捷键以及主菜单系统，并且探索如何使用外接键盘让你的 App 更容易导航和访问。

## 文章

### 🐢 [Overview of C++23 Features](https://mp.weixin.qq.com/s/4PKnoEDmYppYeJoh7oUVWg)

[@xiaofei86](https://github.com/xiaofei86)：从 C++11 开始，标准委员会每 3 年都会推出新的 C++ 版本。今年，C++23 也如期完成。相比 C++20 引入模块、协程、指定构造器等重要特性，C++23 主要在于“完善”。本文介绍了 C++23 25 个主要特性的基本用法，也会深入解析部分特性的原理。感兴趣的同学可以阅读原文了解。

### 🐕 [Using Critical Alerts in iOS applications - Igor Kulman](https://blog.kulman.sk/using-critical-alerts-on-ios/)

[@Barney](https://github.com/BarneyZhaoooo)：本文简单介绍了 2018 年 iOS 12 发布的 **Critical Alerts** 的使用方式，我们比较少接触到它是因为需要特别向 Apple 申请才能使用。

### 🐎 [Sharing content in SwiftUI](https://swiftwithmajid.com/2023/03/28/sharing-content-in-swiftui/)

[@Cooper Chen](https://github.com/cjlcooper)：本文作者介绍了如何通过 SwiftUI 中引入的 CoreTransferable 框架以声明的方式来共享和导出应用程序中的内容，其中着重对 ShareLink 视图进行了说明，通过 ShareLink 的实例，可以将指定的内容导出到一个普通的字符串中，同时也支持如图像、二进制数据或任何其他自定义格式的数据共享，对相关场景下开发的同学有很好的参考价值。

### 🐕 [Block 内调用 super 引发的循环引用](https://juejin.cn/post/7219189831775420472)

[@JonyFang](https://github.com/jonyfang)：介绍了两种较为少见的 Block 循环引用，并提供了解决方法。主要内容：

1. 宏的替换在 Preprocessed 阶段，super 的变更在 compile 阶段，因此对 self 进行 weak/strong dance 并解决不了 super 导致的循环引用问题；
2. 同时通过 RewriteObjc 与 Disassembly 的方法从底层原理上分析了 super 与 Block 调用的本质，辅以内存实际情况与示意图方便加深理解。穿插了 objc_msgSend Stub 相关的知识；
3. 验证了在 Block 中调用 super 时，RewriteObjc 生成代码的一个 bug；

### 🐕 [Network Extension Debugging on macOS](https://www.avanderlee.com/debugging/network-extension-debugging-macos/)

[@nianran](https://github.com/nianran)：文章简介绍了在 macOS 上调试网络扩展的方法。作者从项目设置到调试步骤进行了详细说明，特别是如何在 Xcode 中附加 Network Extension 进程，以及如何使用系统控制台查看相关日志。对于遇到网络扩展调试问题的开发者非常有参考意义 ~


### 🐎 [App Store 新定价机制 - 2023 年最全版](https://zhuanlan.zhihu.com/p/615969005)

[@J_Knight_](https://github.com/knightsj)：2023 年 3 月 9 日苹果正式上线新的 App Store 的定价机制。本文通过自定义价格、全球均衡价格、基准国家和地区和地区性定价方案这几个方面详细介绍了新定价机制的配置和规则。新的 App Store 的定价机制的优点：

- 为了给开发者提供更多的定价选择和灵活性，可以根据不同的国家或地区、市场需求和消费能力来设置合适的价格。
- 为了让开发者更容易管理汇率波动、税率变化等因素，避免造成收入损失或不公平。
- 为了让用户有更多的选择空间和体验，增加他们对 App 的兴趣和满意度。

### 🐎 [Group and sort Swift collections like a pro](https://danielsaidi.com/blog/2023/04/01/group-and-sort-swift-collections-like-a-pro)
[@水水](https://www.xuyanlan.com/)：本文介绍了如何用 Swift 进行专业的排序和分组，Swift 中提供了对集合进行分组和排序的强大方法：
- 使用 Dictionary(grouping:by:) 按名字进行分组
- 分组后可以使用 .map 和 .sorted 进行排序
- 实现 sorted 方法则可以进行自定义排序
对集合的一些具体使用方法感兴趣的读者可以参考参考文本 ~

## 摸鱼周报

[@摸鱼周报 #89](https://mp.weixin.qq.com/s/3B_R0j8dpXpR5G9bCRsyXw)：第 89 期摸鱼周报来了，一起看下本期概要吧：

* 本期话题：WWDC 23 全球开发者大会日期公布
* 内容推荐：推荐近期的一些优秀博文，涵盖：通过 ReplayKit 录制屏幕、在 SwiftUI 中使用相对比例进行布局、保护小组件中的用户隐私等方面的内容
* 摸一下鱼：AGI 元年；微软对于 GPT-4 的研究论文；可以自定义数据源的 ChatGPT 插件；国产开源模型 ChatGLM

## 内推

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

具体信息请移步：https://www.yuque.com/iosalliance/article/bhutav 进行查看（如有招聘需求请联系 iTDriverr）

## 关注我们

我们是「老司机技术周报」，一个持续追求精品 iOS 内容的技术公众号，欢迎关注。

**关注有礼，关注【老司机技术周报】，回复「2021」，领取 2017/2018/2019/2020 内参**

![](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）
