# 老司机 iOS 周报 #233 | 2023-02-20

![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) 提出。

## 新闻

### [Xcode 14.3 Beta Release Notes](https://developer.apple.com/documentation/xcode-release-notes/xcode-14_3-release-notes)

包含 Swift 5.8 以及 iOS/iPad OS 16.4 的 SDK。其中 Swift 5.8 的改动中包含了 [SE-0370](https://github.com/apple/swift-evolution/blob/main/proposals/0365-implicit-self-weak-capture.md) 等新特性。

```swift
class ViewController {
  let button: Button

  func setup() {
      button.tapHandler = { [weak self] in
          guard let self else { return }
          dismiss() // refers to `self.dismiss()`
      }
  }

  func dismiss() { ... }
}
```

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

### [探索增强现实](https://developer.apple.com/events/view/9HU22DPP7P/dashboard)

现在就是开始在 Apple 平台上使用增强现实的最佳时机，加入我们了解如何为数亿台支持 AR 的活跃设备构建 App。通过本次活动，您可以全方位的了解 Apple 提供的 AR 技术栈，包括 ARKit 和 RealityKit 等功能强大的框架，以及 Reality Composer 和 Reality Converter 等创意工具，从而在 AR 中将您的想法变为现实。报名截止 2 月 22 日。

## 新手推荐

### 🌟 🐕 [每天都在用，也没整明白的 React Hook](https://mp.weixin.qq.com/s/wpJvXYf4Q3jFQEEpICtoSg)

[@CrazyCoderShi](https://github.com/CrazyCoderShi): 日常开发中不少同学也在做前端相关开发，本文小编和大家一起学习一下 React Hooks 的用法，重新认识常用的 useState、useCallback、useContext 等，甚至于那些不常用到的 hooks 的使用方法，[本篇](https://mp.weixin.qq.com/s/wpJvXYf4Q3jFQEEpICtoSg)由字节团队提供，强烈推荐正在使用 React 或者打算尝试的同学深入学习。

## 文章


### 🐢 [我们是如何追逐元宇宙、XR 等“概念股”浪潮的？](https://mp.weixin.qq.com/s/Q9VNdOXGlsA4OXRUc5_-xw)

元宇宙已经不是一个很新的概念，但是我们大多数人可能更多的是听过这个词，但是并没有真正体验过，很多元宇宙的产品也是在雏形状态。淘宝人生在过去一段时间完成了淘宝人生小屋项目的正式上线，也这让我们可以很方便的体验元宇宙的世界。从一个展示页面变成元宇宙，相信大家一定很好奇淘宝团队是如何做到的，这里面涉及对于端上而言大量新的技术，以及去落实这样一个项目，该如何分工等等，那就可以好好看一下这篇文章，相信可以有所受益。

### 🐕 [企业微信 Flutter 与大型 Native 工程跨四端融合实践](https://mp.weixin.qq.com/s/Fc6bdgKshZ8WFX1Pcr4LHg)

[@极速男孩](https://github.com/ztlyyznf001)：本文介绍了在企业微信中实践四端 Flutter 与 Native 的跨平台使用。本文主要介绍了其在跨平台中遇到的困难与挑战并且是如何解决的：
- 企业微信代码复杂，业务模块中多，使用 add2app 的方式将 Flutter 工程集成到原生工程中。
- 参考 grpc 的设计流程 , 设计了一套跨语言的 rpc 调用模型 , 通过 protoc 来生成 dart 端 和 c++ 端的代码。并且实现了一套相比 pigeon 更便捷的 channel 的自动化框架：rpc-channel。
- 通过修改引擎代码，解决了部分在跨平台时 Windows 和 Mac 遇到的通信，UI，内存等问题。
- 完善和统一导航栏，文字等基础组件在在不同端上的体验。
- 对各个业务提供独立的 example application 运行的能力。通过 grpc 的远程调用宿主 APP 的服务的方式来和主工程进行解耦。

### 🐎 [Debouncing with Swift concurrency](https://sideeffect.io/posts/2023-01-11-regulate/)

[@Cooper Chen](https://github.com/cjlcooper)：本文简单介绍了 debouncing 在 Swift 多线程中如何进行定时执行和函数防抖，并通过简化任务次数提高了性能和效率，可以为有相似应用场景的开发同学提供一些有用的参考信息。

### 🐎 [iOS 内存优化之工具介绍](https://juejin.cn/post/7190296873373007931)

[@老峰](https://github.com/gesantung)：本篇文章主要介绍了 Xcode 内存图和 leaks 工具的使用，以及排查内存问题的流程与思路，涉及以下方面：
- 运行项目，测试覆盖场景
- 使用内存图 / leaks 查看内存泄露情况
- 针对场景检查是否有隐式间接持有场景
- 根据情况修复问题
- 回归


### 🐎 [Swift Cookbook](https://www.kodeco.com/books/swift-cookbook)
[@Damien](https://github.com/ZengyiMa)：Swift Cookbook 是 kodeco 团队整理的 Swift 入门书籍，汇集了常见的 Swift 语言特性的说明和使用最佳实践，以便可以在需要的时候可以提供参考。学习 Swift 的新手同学不妨收藏使用。

### 🐕 [跨端通信终结者｜看我是如何保证多端消息一致性的 🔥 - 掘金](https://juejin.cn/post/7196970992576708663)

[@Barney](https://github.com/BarneyZhaoooo)：本文完整介绍了作者从问题出发，思考如何优雅地保证多端消息一致性的过程。
- 以  iOS - Web 通信桥接为例，解释了当下方案难以维护的原因。
- 介绍以 YAML 标准化语言定义组件的 DSL 解决方案。

### 🐎 [理解 Clang Module 和 Module Map 语法](https://juejin.cn/post/7195394554760003644)

[@J_Knight_](https://github.com/knightsj)：本文介绍了 Clang Module 的功能特点，以及它的缓存机制，在 Xcode 中的使用方法，也结合代码讲解了如何制作一个模块的方法。另外还介绍了 Module Map 的作用以及它的声明方法。

### 🐕 [Text Buffer Reimplementation - VSCode](https://github.com/SwiftOldDriver/iOS-Weekly/issues/3843)

[@红纸](https://github.com/nianran)：本文是 VSCode 代码缓冲区的一次优化改造，基于传统的 piece table 数据结构来替代原有基于行的 ModuleLine 的 line array 。旧行数组结构需要耗费大量的构造时间，并占用大量内存。新的数据结构有着内存开支小、初始化快、插入和查询效率高等优势。如果对数据处理感兴趣的话，本文值得一读。

> 译文：[【译】重新实现 Text Buffer](https://macplay.github.io/posts/text-buffer-reimplementation/)
> 扩展阅读：[Piece Table 数据结构](https://zhuanlan.zhihu.com/p/268726520)

### 🐢 [从大前端“穿越”到终端，开发者应该必备什么技能？ | 解读终端的 2022](https://mp.weixin.qq.com/s/t0xLKrMF4al4cgAXeCwyow)

[@享耳先森](https://github.com/iblacksun)：现下裁员不断，新增招聘岗位越来越少，终端开发者何去何从？本文介绍了过去几年移动端领域技术发展；对比了现有跨端技术；同时，针对未来技术演化作者也给出了一些预测，希望对大家有帮助。

## 代码

### [ChatGPT Jailbreak](https://github.com/gayolGate/gayolGate/blob/index/ChatGPTJailbreak)

[@老驴](https://weibo.com/u/6090610445)：ChatGPT 这类的 LLM 模型，一般都会存在特殊 prompt 来越过系统限制。链接中的就是其中之一，可以让 ChatGPT 回答一些正常情况下不能回答的问题。大家可以试试看，权当娱乐。

## 摸鱼周报

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

* 本期话题：开发加速器：在 App 或游戏内创造无障碍体验
* 本周学习：Any 和 AnyObject 以及 AnyClass 
* 内容推荐：依赖注入、自定义 Button 外观与行为、正则表达式、创建 XCFramework 以及创建可配置的小组件文章推荐
* 摸一下鱼：一个白噪音网站；ChatGPT 飞书机器人配置；在线 NodeJS 平台 AirCode；ChatGPT for stackoverflow 浏览器插件

## 内推

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