# 老司机 iOS 周报 #247 | 2023-06-05

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

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

## 新闻

### [Upcoming changes to the App Store receipt signing intermediate certificate](https://developer.apple.com/news/?id=smofnyhj)

对于 **本地** 校验支付凭证的 APP 来说，需要适配 SHA-256 校验，对于不支持 SHA-256 的 APP 将在 2023.08.14 之后拒绝提交。这项调整对使用 AppTransaction API 与 verifyReceipt(Web Service Endpoint) 等后端校验的 APP 不受影响。

同时 2023.06.20 之后，对于新版本的 iOS/iPadOS/macOS 等系统，沙盒环境都将强制切换为 SHA-256 校验。

## 文章

### 🌟 🐢 [百度 APP iOS 端包体积 50M 优化实践（一）总览](https://mp.weixin.qq.com/s/ANbFzg7X932o-iDpa8FcxQ)

[@xuyafei86](https://github.com/xiaofei86)：本文介绍了百度 APP 包大小优化的完整实践，包括百度 APP 的技术方案和各项优化的详细收益。此系列文章目前包括总览、图片优化和资源优化 3 章，详细讲述了各项优化的技术细节，感兴趣的同学可以持续关注。

* [百度 APP iOS 端包体积 50M 优化实践（二）图片优化](https://mp.weixin.qq.com/s/RR7sjhkuTFgUp7S5E8ECMw)
* [百度 APP iOS 端包体积 50M 优化实践（三）资源优化](https://mp.weixin.qq.com/s/FQWCX0wkK6ifHQ8RhmmPsg)

### 🌟 🐕 [How the Raycast API and extensions work](https://www.raycast.com/blog/how-raycast-api-extensions-work)

[@kemchenj](https://kemchenj.github.io/)：Raycast 是 macOS 上新兴的一款快捷启动器软件，开发者友好的插件系统是他们的亮点之一，最近他们也在博客上分享了这个系统的开发经历，亮点很多：

- 基于 Node.js 和 React 搭建了插件的接口，React 渲染出 Dom Tree 之后通过 XPC 传输回 Raycast 主 App 进行渲染，后续的 Dom Tree 通过 JSON Patch 协议进行增量更新
- UI 控件全部都是原生控件渲染的，React 侧只能使用了 Raycast 提供的一套 Component，性能高内存占用少
- 跟 Electron 套壳应用不同，没有将 Node.js 引擎打包进 App 里，而是在 App 启动后下载并且管理起来，每次更新都不需要重复下载 Node.js 的引擎
- 插件商店

个人感觉这套系统设计得简洁优雅，对于 VSCode 进行了很多借鉴，并且在此基础上也有自己的创新，推荐大家进行阅读和品鉴。

### 🐢 [Pushing the limits of NSStatusItem beyond what Apple wants you to do](https://remotion.com/blog/pushing-the-limits-nsstatusitem)

[@Cooper Chen](https://github.com/cjlcooper)：NSStatusItem 是 Mac 开发中设置状态栏的属性，然而苹果的人机界面指南（HIG）在桌面开发中远远不如移动端那般灵活和先进，因此来自 Remotion 的工程师在最小屏幕利用率上决定超越 HIG 的指导，并突破菜单栏额外内容的极限。本篇文章详细讲述了如何使用 SwiftUI 来完成以上需求并且给出了最佳实践，为相关领域开发的同学提供了一个不错的参考。

### 🐢 [Apple-Silicon-Guide](https://github.com/mikeroyal/Apple-Silicon-Guide)

[@Leo](https://github.com/leomobiledeveloper)：一篇关于 Apple Silicon 设备的指南。内容非常的丰富，包含了每个芯片的特点和在这些芯片驱动的设备上有哪些好的应用软件、工具，也包含了像 Unity、Metal、CoreML 等在 Apple Silicon 设备上可以进行软件开发的框架学习材料。

- 推荐人：[XanderXu](https://github.com/XanderXu)

### 🐎  [Skip code during debugging in Xcode](https://blog.eidinger.info/skip-code-during-debugging-in-xcode)

[@zoeGuo](https://github.com/zoeGuo)：文章介绍了三种在断点调试过程中使用 lldb 命令跳过一些执行代码的方式：
  - th j -b (thread jump --by)：跳过断点位置后的相对代码行数；
  - th j -l (thread jump --line)：跳至指定代码行数；
  - 使用 expression 修改代码中条件判断的变量值，来跳过相应判断语句的执行。

利用好断点调试可以大大提高开发效率，有兴趣的读者可以移步 WWDC2018 session [Advanced Debugging with Xcode and LLDB](https://developer.apple.com/videos/play/wwdc2018/412/)，这个 session 中演示了更多的断点调试技巧。

### 🐕 [Text Filters in Kaleidoscope 4](https://blog.kaleidoscope.app/2023/05/31/text-filters-in-kaleidoscope-4/)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：Kaleidoscope 4 中的文本过滤器是一项主要的新功能，它可以帮助您更轻松地比较和分析文本数据。以下是这篇文章中描述的主要内容：
- 文本过滤器的用途：文章介绍了使用文本过滤器的原因。文本过滤器可以帮助去除比较中的视觉噪音，使您更专注于重要的差异。
- 使用内置过滤器：Kaleidoscope 4.0 提供了 7 个预定义过滤器，可以直接在现实世界中使用。通过单击工具栏中的文件处理工具栏项，您可以选择要应用的过滤器。文章中演示了如何使用内置的过滤器来过滤时间戳、对象地址、进程和线程 ID，以及 UUID。
- 组合过滤器：您可以组合多个过滤器以获得所需的结果。文章中展示了如何同时选择多个过滤器，并清除选择以取消过滤。
- 创建自定义过滤器：Kaleidoscope 4.0 还允许您创建自定义过滤器。通过打开文本过滤器窗口，您可以添加新的过滤器。文章详细说明了如何创建自定义过滤器，包括命名过滤器、定义搜索模式和替换规则。
- 使用正则表达式：创建过滤器时，您可以使用正则表达式来定义搜索模式。文章提供了一个例子，并解释了如何使用内置提示和实时过滤样本数据来编写和测试正则表达式。

总结：Kaleidoscope 4 的文本过滤器功能使您能够更轻松地处理和比较文本数据。您可以使用内置过滤器或创建自定义过滤器，并使用正则表达式定义搜索模式。这个功能在处理生成的文本数据时非常有用，可以帮助去除与重要差异无关的内容。

### 🐕 [Using Upcoming Feature Flags](https://www.swift.org/blog/using-upcoming-feature-flags)

[@AidenRao](https://weibo.com/AidenRao)：从 Swift 5.8 开始，你可以使用新的编译器标志和编译条件，灵活应用下一个大版本的 Swift 功能。这样能按照自己的节奏，逐个特性、逐个目标地应用版本更改，提前做好代码迁移。

### 🐕 [使用 SwiftUI 开发 RSS 阅读器](https://mp.weixin.qq.com/s/8DFqljikD7FKvHTdZj2weA)

[@享耳先森](https://github.com/iblacksun)：本文是戴铭在苹果加速器活动的一次分享，介绍了如何使用 SwiftUI + CoreData 实现一个 RSS 阅读器，新手友好。


## 代码

### [RegexHub](https://github.com/lukehaas/RegexHub)

[@Smallfly](https://github.com/iostalks)：细数那些程序员写起来很痛用起来很爽的工具，那正则表达式一定能排上号。[RegexHub](https://projects.lukehaas.me/regexhub/?) 汇集了程序员高频使用的正则表达式，并且作者把源代码开源在 [GitHub](https://github.com/lukehaas/RegexHub)，接受 PR，欢迎你的添砖加瓦。

## 摸鱼周报

[@摸鱼周报 #95](https://mp.weixin.qq.com/s/hi8Dy2H_iBFWeO0V_tQ5xw)：第 95 期摸鱼周报来了，一起来看下本期概要：
* 本期话题：WWDC23 定档；Xcode 14.3.1 RC 版本已修复打包导致的崩溃问题
* 本周学习：Python 导入时运行时、跨文件引用、导入 C 语言库时的几个开发知识点
* 内容推荐：关于在 App Store 推广应用的技巧、SwiftUI 预览的工作原理、离屏渲染等方面的内容
* 摸一下鱼：WWDC23 内参招募；微软 Build 大会一些让人惊艳的 AI 产品；让 AI 玩 Minecraft；一个易使用的 AI 程序创建平台；Apple Design Awards 决赛名单公布
* iOS 招聘：抖音外卖方向 - 北京

## 内推

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