# 老司机 iOS 周报 #252 | 2023-07-17

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

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

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

本周我们又更新了 7 篇内参，每篇质量都非常高，由于篇幅问题，开头先推荐三篇可能大家更感兴趣的，其他的放到周报最后了 ~

### 🌟 [WWDC23 10055 - UIKit 中的新功能](https://xiaozhuanlan.com/topic/0651384792)

Sharker：本文主要介绍了 UIKit 在 iOS 17 中的新功能、核心架构改进和 iPad OS 应用程序的改进，并且提供了多项常规增强功能，例如 Xcode 预览支持、自定义特征、交互式文本操作等。 这些增强功能为应用程序开发人员提供了更好的设计和用户体验，同时还改进了语言支持和性能。

### 🌟 [WWDC23 10197 - SF Symbols 5 使用指南](https://xiaozhuanlan.com/topic/6438257091)

Mim0sa：为了更方便没有 SF Symbols 经验的读者理解，也将往年的 SF Symbols 相关内容归纳整理。本文从 SF Symbols 的特性切入，讨论 SF Symbols 这款由系统字体支持的符号库有哪些优点以及该如何使用。在这次 WWDC 2023 中，除了符号的数量增加到了 5000+ 之外，还有能让符号们 “动” 起来的新功能，让 SF Symbols 这把利器变得又又更加趁手和锋利了。

### 🌟 [WWDC23 10028 - 让你的小组件栩栩如生](https://xiaozhuanlan.com/topic/8965310274)

Raydon：现小组件支持在 Mac 的桌面、iPad 的锁屏、iPhone 的 StandBy 以及 Apple Watch 的 Smart Stack 显示。小组件内容刷新时，添加 SwiftUI 的动画效果让内容变化更加流畅。利用 SwiftUI 和 AppIntents，可以在小组件上使用 Button 和 Toggle 交互组件，让你的小组件栩栩如生。

## 文章

### 🌟 🐕 [iOS 中的栈内存保护： ____stack_chk_fail 和 ARMv8.3 的指针验证机制](https://juejin.cn/post/7251849146004734008)
[@莲叔](https://github.com/aaaron7)：栈溢出攻击是非常常见的攻击手段，攻击者通过覆盖函数的返回值来实现跳转到非预期的代码进行执行。本篇文章介绍了目前比较普遍应用的两种应对栈溢出攻击 ____stack_chk_fail 和指针认证，并且在 iOS 中构建出了针对 ____stack_chk_fail 的复现环境。感兴趣的朋友可以研究一下。

### 🐎 [轻量化的 iOS 动画框架](https://mp.weixin.qq.com/s/ABveMrA--3JWkpfb2d09lw)

[@J_Knight_](https://github.com/knightsj)：本文首先列举了几个常用动画库的优缺点，并抛出了动画串行和并行的实现场景。然后结合流程图和代码分享了一个针对动画回调嵌套问题的轻量化解决方案，让组合动画的代码结构更加清晰，方便开发和后续迭代修改。

### 🐕 [Flutter 小技巧之 InkWell & Ink 你了解多少](https://mp.weixin.qq.com/s/TL7bRp9f9BrAgiwGc1OXGw)

[@CrazyCoderShi](https://github.com/CrazyCoderShi): 本文带你详细了解 Flutter UI 组件中点击事件水波纹效果组件系列，包含 InkWell 和 Ink 原组件，并且详细讲解了如何使用 Ink 系列组件给其他组件添加水波纹点击效果，Flutter 小白同学可以学习一下 👍

### 🐕 [百度 APP iOS 端包体积 50M 优化实践(四)代码优化](https://mp.weixin.qq.com/s/H9KtBPE67g3752OcnjXG7A)

[@JonyFang](https://github.com/JonyFang): 本文依次介绍了 LinkMap 文件格式，及包体积瘦身中代码相关的优化方案（无用类优化、无用模块瘦身、无用方法瘦身、精简重复代码、工具类瘦身和 AB 实验固化）。

代码优化同样也是包体积优化的重头戏，但跟图片和资源优化相比较，代码修改影响范围大，再加上 OC 语言动态调用方式多种多样，这导致代码的删除操作更容易引起质量问题，所以优化收益落地难度比较大。百度 APP 在优化实践过程中挖掘出 20M 的收益，经过两个季度落地 8M 左右。如有包体积优化诉求，整体思路或许可以参考下。

iOS 包体积优化实践系列文章的回顾：
- [包体积优化（一）总览](https://mp.weixin.qq.com/s/ANbFzg7X932o-iDpa8FcxQ)
- [包体积优化（二）图片优化](https://mp.weixin.qq.com/s/RR7sjhkuTFgUp7S5E8ECMw)
- [包体积优化（三）资源优化](https://mp.weixin.qq.com/s/FQWCX0wkK6ifHQ8RhmmPsg)

### 🐎 [@backDeployed to extend function availability to older OS releases](https://www.avanderlee.com/swift/backdeployed-function-back-deployment/)
[@Smallfly](https://github.com/iostalks)：在过去苹果使用 `@available` 来标识高版本新增的 API，从而限制低系统版本使用，但是有些场景下，新增的 API 只不过是原有低版本 API 的封装，其实在低版本上依然可以使用。在 Swift 5.8 中新增了 `@backDeployed` 特性关键字，用于标记新 API 可以向前兼容。

### 🐎 [Introducing Swift HTTP Types](https://www.swift.org/blog/introducing-swift-http-types/)

[@Damien](https://github.com/ZengyiMa)：想尝试用 Swift 写服务端项目吗？Swift 官方近日宣布推出名为 Swift HTTP Types 的新开源软件包。该软件包旨在为 Swift 中的客户端 / 服务器 HTTP 操作提供一组共享的通用类型。Swift HTTP Types 提供了 HTTP 消息的核心构建模块的通用表示，包括 HTTPRequest 和 HTTPResponse。想利用 Swift 来完成服务端项目的同学不妨尝鲜使用。


## 设计

### 🐎 [First Attempt at Designing for visionOS](https://www.david-smith.org/blog/2023/07/10/design-notes-39/)

[@EyreFree](https://github.com/EyreFree)：知名 iOS Widgets 应用 Widgetsmith 的作者分享了自己为应用适配 visionOS 的经历，对 visionOS 感兴趣的小伙伴不要错过。

## WWDC23 内参更新

### 🌟 [WWDC23 10191 - 在 iOS 上使用 Object Capture](https://xiaozhuanlan.com/topic/8741092356)

轻舟：今年，Apple 将 Object Capture 技术带到了 iOS 平台，利用这项技术，你可以随时随地使用你的移动设备为你身边的物体创建 3D 模型。它可以应用在项目中，在你的手机上预览，甚至是在新发布的 Apple Vision Pro 上查看。让我们一起来探索这项令人兴奋的技术。

### 🌟 [WWDC23 10188 - 使用 CKSyncEngine 同步 iCloud](https://xiaozhuanlan.com/topic/5379482610)

LabLawliet：本文将结合多个实际基于 `iCloud` 的项目，带大家了解 `CKSyncEngine` 如何帮助您将人们的 `CloudKit` 数据同步到 `iCloud`。了解当您让系统处理同步操作的调度时，如何减少应用程序中的代码量。并分析 `CKSyncEngine` 接入现有项目的可行性。

### 🌟 [WWDC23 10121 - What's new in CSS](https://xiaozhuanlan.com/topic/5902738416)

leejunhui：Web 上的发展日新月异，CSS 也不例外。Apple 今年在 Safari 上支持了许多的 CSS 新特性。本文主要介绍了四个维度的 CSS 新特性，分别是布局、颜色、选择器和字体排版。与此同时本文还介绍了 Safari Technology Preview 中可以体验到的 WebKit 新特性，以及全新改版的 Safari 开发者菜单。

### 🌟 [WWDC23 10105 - 打造响应更快的相机体验](https://xiaozhuanlan.com/topic/8534120679)

Lion：iOS 17 提供了一些新的特性，通过延迟图片处理、快门零延迟、响应捕获等新特性，以及状态监听等措施，能大幅提高相机响应速度，创造更流畅的拍摄体验。

## 内推

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

[上海] 百度输入法 - 客户端开发 - iOS

[深圳 / 广州 / 北京 / 三亚] 字节跳动 - 剪映 - 招聘客户端开发

[上海] B 站 - 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）
