# 老司机 iOS 周报 #120 | 2020-07-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) 提出。

**热烈欢迎周报团队的第 34 个编辑 - [@Damien](https://github.com/ZengyiMa)！Damien 目前就职于携程国际基础平台。**

## WWDC20

本周在周报公众号上我们推送了 5 篇 WWDC20 内参专栏内的文章，每篇都很精彩！

- 🌟 [WWDC 2020 Session 10041 - What's new in SwiftUI](https://mp.weixin.qq.com/s/uwDTHvfQtsikDDSJyEkVcQ)
- 🌟 [WWDC2020 10646 - What's new in Web Inspector](https://mp.weixin.qq.com/s/tidA4bwYz3C5qNGrOtTaKQ)
- 🌟 [IAP 订阅服务的生命周期和最佳实践](https://mp.weixin.qq.com/s/9cG9TPFxDbtSD3hqTqimLA)
- 🌟 [介绍 Xcode 中 StoreKit 测试](https://mp.weixin.qq.com/s/m2twCCn5G4o0cTeWUKDn_w)
- 🌟 [在 SwiftUI 中创建复杂功能](https://mp.weixin.qq.com/s/T_N1VE2UJrRwKqVTfXDT4w)

## 新闻

### 🐎 [Github 徽章 +1：Arctic Code Vault Contributor](https://github.blog/2020-07-16-github-archive-program-the-journey-of-the-worlds-open-source-code-to-the-arctic/)

[@JonyFang](https://github.com/JonyFang)：GitHub 在今年已经将 21TB 的开源代码封存到北极圈中，通过特别设计的胶卷以及北极代码保险柜（GitHub Arctic Code Vault），这些代码预计将能够保存 1 千年，而这项代码封存工作已经在 2020 年 7 月 8 日完成。 GitHub 还设计了一个特别的徽章，来感谢有贡献的开发者，当开发者所贡献的代码，被选择封存到北极，在其个人页面便会显示 Arctic Code Vault 徽章。另外，GitHub Archive Program 还与 Project Silica 合作，Project Silica 开发了可储存云端规模资料的媒体，透过超高速雷射光技术，改变玻璃材料的结构，将资料储存在石英玻璃中。 GitHub 提到，因为石英玻璃是一种耐用的储存材质，可将资料保存上万年，具有抗电磁干扰、抗水和抗热的特质，是开源程式理想的储存媒体，目前 GitHub 利用这项技术封存了 6 千个最受欢迎的存储库。

> 中文的译文可以参考这篇：[你的 Git 代码已成功入驻北极圈，至少保存 1000 年](https://mp.weixin.qq.com/s/61dD_RyExzs6EGvQIN_z2Q)

## 新手推荐

### 🐎 🌟 [Flutter widgets 快问快答 | 第一期](https://mp.weixin.qq.com/s/rBNAs1r5j0DzlhOeRu9H0A)

[@CrazyCoderShi](https://github.com/CrazyCoderShi)：这是 Google 官方做的一个比较有意思的教程，这是一系列的，在 B 站持续更新，有助于新接触 Flutter 的同学快速了解 Widgets 及各种酷炫的用法，强烈推荐新手刷一下，每个视频讲解都很短，[传送门](https://space.bilibili.com/64169458/channel/detail?cid=131083)。

## 文章

### 🐕 🌟 [iOS14 隐私适配及部分解决方案](https://mp.weixin.qq.com/s/CJML-2YUv6sqEEnI8rI0Bw)

[@享耳先森](https://github.com/iblacksun)：隐私一直是 iOS 系统的重中之重，在刚刚结束的 WWDC 2020 ，苹果向我们展示了新的 iOS14 系统。iOS14 的适配，很重要的一环就集中在用户隐私和安全方面。本文介绍了 iOS 14 系统隐私方面的调整以及开发者如何跟进适配，涉及以下方面的调整：

- 相册增加 Limited
- 地理位置增加模糊定位
- 局域网信息
- 剪贴板
- 相机和麦克风
- IDFA

### 🐕 🌟 [iOS 14 苹果对 Objective-C Runtime 的优化](https://mp.weixin.qq.com/s/vSw98xbpEe4pjtBfqFNGAw)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：尽管 `Swift` 势头凶猛，但 `Objective-C` 也依然在发挥着自己的余热。在 `WWDC 2020` 中，`Apple` 针对 `Objective-C` 中的 `Runtime` 做了三项优化：

- 类数据结构变化：节约了系统更多的内存
- 方法地址的优化：节约了内存，并且提高了性能
- `Tagged Pointer` 格式的变化：提高了 `msgSend` 性能

### 🐢 🌟 [美团外卖 Flutter 动态化实践](https://mp.weixin.qq.com/s/wjEvtvexYytzSy5RwqGQyw)

[@xiaofei86](https://weibo.com/xuyafei86): 动态化是 Flutter 无法避开的话题。本文从 Flutter 的特点讲起， 阐述了美团外卖团队在整个 Flutter 动态化上探索的心路历程，还有设计理念、核心原理以及业务应用的经验。本文的视角也不局限于框架本身，更多思考了在解决问题的过程中技术团队需要做的事情，希望能对大家有所启发和帮助。

### 🐎 🌟 [构建健全的空安全](https://mp.weixin.qq.com/s/rgVJn928fyGunNO5kDKnSA)
[@Damien](https://github.com/ZengyiMa)：空值错误是最常见的错误之一，Dart 团队为了让开发者构建更安全的程序，带来了空安全的计划。本文将会从设计原则、语法介绍、易用性、兼容性等方面来介绍 Dart 团队在构建空安全计划的努力。空安全计划的推出不仅可以让你程序更安全而且还可以在编译器的优化下提升 19% 的性能。从事 Dart & Flutter 相关领域的同学必读文章。

### 🐢 [A Best in Class iOS App](https://www.swiftjectivec.com/a-best-in-class-app/)

[@AidenRao](https://weibo.com/AidenRao)：作者维护了一个列表，去支持列表里提到的每一个细节，帮助你使 APP 变得更好，它涵盖五个部分：

- 辅助功能：最好的应用，为每个人的使用而设计，例如支持视力辅助功能 Voice Over，足够高的色彩对比度（至少 7:1）。
- 平台技术：去支持苹果提供的新特性，例如暗模式，iPadOS 的多任务处理。
- 用户体验：好的用户体验让人无需思考，一切理应如此。例如使用正确的音频设置并优雅地响应音频中断，所有可点击的界面元素至少为 44*44 大小。
- 设计：这部分列出了经过深思熟虑的设计规范。例如使用正确的系统边距（layoutMarginsGuide，safeAreaLayoutGuide 等）。
- App Store：App Store 展示资料经过精心的设计，例如创建预览视频，对关键词和类别进行仔细研究。

### 🐕 [Our Transition to React Native](https://blog.khanacademy.org/engineering/our-transition-to-react-native/)

[@looping](https://github.com/looping)：本文介绍了将 Khan Academy（可汗学院）的应用迁移到 React Native 的原因，其中遇到的挑战，以及整体迁移过程。同时也讨论了在混编、国际化等问题上的解决方案。最后提出了个人对 RN 的一些看法，目前自己团队技术现状和对今后的展望。推荐有正在做类似技术迁移和对长期跨平台技术演进感兴趣的同学阅读参考。

### 🐕 [Flutter 和桌面应用的最新进展](https://mp.weixin.qq.com/s/AfgT7jqv4m0YjFRIF5HhbA)

[@极速男孩](https://github.com/ztlyyznf001)：flutter 的目标是全平台的语言，包括移动端桌面端和 Web 的应用。在最新的 dev 分支中，flutter 已经开始提供了对 mac app 的支持，本文主要介绍了 flutter desktop 的最新进展。flutter desktop 在新版本中主要优化了桌面端的键盘和鼠标输入体验，提供了 Windows 的外部函数的支持，通过通用接口的方法提供 Windows 和 Linux 插件的支持，并在 Windows 中提供较好的兼容性。值得注意的是 Windows 和 Linux 在 master 的 Channel 上可用，而 macOS 只在 dev 的 Channel 上可用，macOS 版本虽然较为稳定，但不推荐在生产环境使用。

### 🐕 [You Should All Build This Custom Instrument for Your App](https://blog.cocoafrog.de/how-to/2020/06/20/You-should-all-build-this-custom-instrument.html)

[@四娘](https://kemchenj.github.io/)：Instruments 是一个强大的调优工具，在 18 年的时候 Xcode 10 就重写了 instruments 的核心，让我们可以更加便捷地进行自定义，作者通过一个测量网络请求时间的例子介绍相关的操作步骤和 API。

### 🐎 [探索WebAssembly实现iOS热修复/第一篇/WebAssembly快速上手](https://mp.weixin.qq.com/s/YGY7M1PjXEujAKoIOnCWtQ)
### 🐎 [探索WebAssembly实现iOS热修复/第零篇/前言](https://mp.weixin.qq.com/s/U0q4n71VhIe6AawPtNVTzg)

[@五子棋](https://satanwoo.github.io): 作者基于 libffi + WebAssembly 实现了一套 iOS 热修复的框架，整体思路比较清晰，对于想要了解 Objective-C Runtime 的同学来说是一个不错的文章。本文是系列第一、二篇。


### 🐕 [Metal新特性：大幅度提升iOS端性能](https://mp.weixin.qq.com/s/cJocn4bLXsO2336Cha9woA)

[@莲叔](http://aaaron7.github.io/)：WWDC20 推出了非常多关于 Metal 的专题，足以可以苹果对于推广这项新的 GPU 计算框架的决心。本文较为系统的介绍了其中的主要内容，主要包括以下章节
- 【Harness Apple GPUs with Metal】
- 【Optimize Metal apps and games with GPU counters】
- 【Build GPU binaries with Metal】
- 【Debug GPU-side errors in Metal】
- 【Gain insights into your Metal app with Xcode 12】

内容涵盖了功能介绍、性能优化，Debug 技巧和相关工具等。对于 iOS 渲染类栈的同学建议学习。

## 工具

### [是时候扔掉 Postman 了，Apifox 真香！](https://xie.infoq.cn/article/ae84a97dcda218e46cd885e8d)

[@Parsifal](https://github.com/ParsifalC)：Apifox 是一款集成了 Postman 的接口调试、Swagger 的接口文档管理以及 Mock 的假数据模拟三个功能的工具，目前正在开放内测，厌烦了在各个工具间切换的朋友可尝试。

## 内推

老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。

如果你想**找工作**，点这里：https://www.yuque.com/iosalliance/article/bhutav

如果你想**招人**，点这里：https://www.yuque.com/iosalliance/article/ycyhf3

当然，也欢迎你关注我们每一期的周报，我们会在每期周报底部及时更新编辑内推岗位。

## 关注我们

我们开通了公众号，每期发布时公众号（LSJCoding）会推送消息，欢迎关注。

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