# 老司机 iOS 周报 #117 | 2020-06-15

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

## 新闻

### 🌟 [苹果公布史上最大规模的 WWDC20 阵容](https://www.apple.com/newsroom/2020/06/apple-reveals-lineup-for-its-biggest-ever-worldwide-developers-conference/)

[@享耳先森](https://github.com/iblacksun)：WWDC 已经进入第 31 个年头，WWDC20 将于 6 月 22 至 26 日以前所未有的虚拟方式将全球超过 2300 万的苹果开发者社区聚集在一起，将成为迄今为止规模最大的 WWDC。

Keynote 主题演讲在北京时间 23 日凌晨 1 点开始，对于中国的观众来说，主题演讲也将在腾讯、爱奇艺、Bilibili 和优酷上进行直播。同时，超过 1000 名苹果工程师将在 Developer Forums 回答问题并参与技术讨论，开发者可以发布自己的问题，直接向苹果专家学习。

## 文章

### 🌟 🐕 [iOS 架构谈：剖析 Uber 的 RIB 架构](https://mp.weixin.qq.com/s/8mkPa-5IdddJ10I_sAMK-A)

[@老驴](https://www.weibo.com/6090610445)：这是一篇由 Uber 工程师撰写，知识小集团队翻译的对 Uber RIB 构架的解析文章。RIB 从很多年前 Uber 切换 Swift 开始使用，到今天已经存在了很长时间了，应该可以说算是一种经得住考验的构架。如果很多年前你对 RIB 构架的理解没有很深入的话，也许你今天再回头来看，就会有更深的理解。

还记得2，3年前，构架风潮兴起的时候，几乎所有的公司的，所有的团队都在搞自己的构架。然而，经历了时间的考验，并不是所有的构架最后都存活了下来。谈点个人看法：所有的构架都应该以自己的业务需求为出发，为了构架而构架，那就是耍流氓了。这个角度上去说，也许很多年以后，再回头去看，说不定觉得 MVC 才是更好的选择呢？

### 🌟 🐎 [Flutter 卡顿问题的监控与思考](https://mp.weixin.qq.com/s/-BTEkHYeh_tHqJY2UNI_xw)

[@极速男孩](https://github.com/ztlyyznf001) : 卡顿问题一直是开发中比较关注值得关注的问题。本文首先介绍了如何去判断卡顿以及卡顿的原理，然后从修改 Dart SDK， AOT 模式下采集堆栈（暂停线程），AOT 模式下采集堆栈（通过信号）这三种不同的解决方案，并比较了三中不同方案各自的优劣势。

### 🐢 [如何在模块化/组件化项目中实现 ObjC-Swift 混编？](https://juejin.im/post/5edd8ec16fb9a0480067d37d)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：在单一 target 的项目中，ObjC 和 Swift 可以直接通过桥接文件 bridging header 实现混编，但如果是在多个 target 或 library  或 framework 中，是不能使用 bridging header 的，这时候如何实现混编呢？文中详细记录了在混编过程中的踩坑历程，可供大家参考借鉴。

推荐阅读：[一波 N 折的携程酒店 Swift-Objc 混编实践](https://mp.weixin.qq.com/s/N6ToEkN9c-2_rIvkv4o9hA)

### 🐕 [iOS 中的网络调试](https://juejin.im/post/5ee07f45f265da76ce5795aa)

[@looping](https://github.com/looping)：本篇文章不仅详细地介绍了我们所熟悉的一些网络调试工具和原理，而且还经过实践给出了一个不会影响原有网络请求，又能拿到所有网络请求回调的方法。在阅读过程中我们会进一步了解到作者能通过学习借鉴开源框架、官方示例等的设计原理，为解决问题带来新思路，不断地优化演进成最终方案，非常值得肯定和学习。

### 🐢 [在block内如何修改block外部变量？](https://mp.weixin.qq.com/s/VFzTBCiFcbPHqWAnsDtT4A)

[@水水](https://www.xuyanlan.com) : 如果面试被问：在 block 内如何修改 block 外部变量？ 你会如何回答呢？如果你不清楚没关系，本文简洁明了的带你了解底层原理，值得一读。

### 🐎 [版本管理工具及 Ruby 工具链环境](https://mp.weixin.qq.com/s/s2yJEb2P0_Kk-rIpYBi_9A)

[@红纸](https://github.com/nianran)：来自瓜神的**「CocoaPods 历险记」**系列第一篇，本文介绍了版本管理工具以及 Ruby 工具链环境。从中我们可以学习几个不同的版本管理工具的差异，以及 Cocoapods 作为包管理工具如何控制 iOS 项目中各个依赖库版本信息。另外瓜神通过实操 Bundler 管理工程的全流程，详细介绍了如何控制 Gem 的版本信息，以及如何使用 rbenv 管理对应的 ruby 版本。

### 🐕 [Swift Pointers Overview: Unsafe, Buffer, Raw and Managed Pointers](https://www.vadimbulavin.com/swift-pointers-overview-unsafe-buffer-raw-and-managed-pointers/)

[@anotheren](https://github.com/anotheren)：指针是 Swift 语言中最复杂的功能之一，本文成体系地介绍了 Swift 中的 19 种指针，并详细解答了它们是什么，何时使用以及从中可以得到什么。如果你对音视频感兴趣，那么你在和底层接口(主要是一些 C API)打交道的过程中是绕不开指针的，快去了解一下吧。

## 工具

### [Swift Package Index](https://swiftpackageindex.com/)

[@EyreFree](https://github.com/EyreFree)：随着 Xcode 11 中开始集成 Swift Package Manager，越来越多的第三方库也添加了对 SPM 的支持，切换到 SPM 已经逐渐成为可能。`swiftpackageindex.com` 是一个对支持 SPM 的 Swift 库的索引，即一个 SPM 库搜索引擎，它目前是一个非官方的、由开源社区维护的项目。它的实现原理很简单，数据是依靠人工录入的，即当有人将开源库提交到主列表中时（有需要提交的库？[点这里](https://swiftpackageindex.com/add-a-package)），此站点会立即对它进行完全克隆，并且每隔几个小时进行一次轮询，以便在索引中看到的信息始终反映最新的库版本，而不需要库作者执行任何操作。选择正确的依赖关系不仅仅是找到满足您需要的代码，挑选高质量的库是很困难的，`swiftpackageindex.com` 软件包索引可以帮助您更好地决定依赖关系，快来尝试一下吧！

## 代码

### [全新技能，FDottedLine](https://juejin.im/post/5ede002ef265da76e81a4226)

[@邦Ben](https://weibo.com/linwenbang)：Flutter 官方库并没有提供方便的实现虚线的库（其实就是生态还比较弱）。FDottedLine 这个库则提供了灵活构建虚线效果的组件。如果有虚线需求的童鞋，不妨使用一下。

- 同时支持水平、垂直两个方向的虚线
- 支持创建虚线形状
- 提供超简单的方式为 Widget 添加虚线边框
- 支持创建灵活的虚线边角效果

## 内推

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

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

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

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

## 关注我们

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

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