# 老司机 iOS 周报 #102 | 2020-02-24

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

## 新闻

### [Swift Playgrounds For Mac](https://apps.apple.com/us/app/swift-playgrounds/id1496833156?mt=12)

[@张嘉夫](https://github.com/josephchang10)：Swift Playgrounds 最初于 [2016 年](https://tidbits.com/2016/06/13/playing-around-with-swift-on-the-ipad/)在 iPad 上发布，目的是为普通用户提供一种友好的方式来学习 Swift 语言。现在使用 Catalyst 技术制作的 Mac 版本已经发布，在 Mac App Store 上可以免费下载，大小为 155.1 MB，需要 macOS 10.15.3 Catalina 或更新的操作系统。

## 文章

### 🐎 [从探索到落地，手淘引入 Swift “历险记”](https://mp.weixin.qq.com/s/oHGkoGzhMs-l8TX6t0831w)

[@JimQ](https://github.com/waz0820)：本文还原了手淘 iOS APP 历时一年将 Swift 语言从调研到基础设施建设，再到顺利落地业务的全过程，其推进的策略、所遇到的问题及其解决方案，对国内还在踌躇如何落地 Swift 的同学具有很好的借鉴意义。

### 🐎 [iOS Performance tips you probably didn't know](https://www.fadel.io/blog/posts/ios-performance-tips-you-probably-didnt-know/)

[@EyreFree](https://github.com/EyreFree)：作者为前苹果工程师，有多年苹果系统库和系统应用开发经验。文中介绍了 UILabel 和 tag 在资源占用与性能上的一些问题，并且讨论了多线程编程时的一些影响执行效率的细节。文中也提到了某些控件的缓存会在收到 `didReceiveMemoryWarning` 时进行释放（例如 UICollectionView 的重用区），开发者不必对 App 的高内存使用率耿耿于怀，模拟“内存警告”可以观察这一现象。建议对性能优化感兴趣的朋友阅读。


### 🐕 [有赞iOS-基于二进制的编译提效策略](https://mp.weixin.qq.com/s/fcGfyM6hDGY6U1d-fBguuQ)

[@莲叔](http://aaaron7.github.io/)：iOS 从推出至今已经超过 10 年，越来越多的 iOS 工程都变得十分庞大。组件二进制化变为越来越主流的优化方案，能够显著减少全量编译的耗时。这篇文章介绍了有赞在优化过程中的一些心得。其中包含了一些比较零碎的优化手段，如 Xcode 编译优化，CCache 优化等，也包含一套相对完成的 Pod 二进制方案的介绍。整体还算比较体系，比较适合不愿意投入太多时间整理架构的中小型公司参考。大公司往往都有自己的打包架构，不一定适用。

### 🐕 [Standard Library Preview Package](https://swift.org/blog/preview-package/)
[@AidenRao](https://weibo.com/AidenRao)：Swift 团队针对 Swift 迭代，添加标准库的预览版，提供给开发者使用。Swift 团队在正式版本之前，可以通过预览版的使用反馈，来做 API 的调整。

## 工具

### 🐎 [URLFormat](https://github.com/ilyapuchka/URLFormat#vapor)

[@极速男孩](https://github.com/ztlyyznf001)：这是在 [vapor] (https://github.com/vapor/vapor) 中基于 [common-parsers](https://github.com/ilyapuchka/common-parsers) 的不需要使用正则并且类型安全的来对 url 请求进行匹配的工具。

###  🐕 [Swift 编写的 iOS 端抓包工具（Knot)](https://juejin.im/post/5e426f1a518825496f38149a)

[@老峰](https://github.com/GesanTung)：已支持的动能：
- Http、Https 流量抓取
- 流量解析、多格式导出、过程分析
- 可抓取局域网内其他设备与外界通信数据
- CA 证书安装、导出
- 中英文国际化
- 过滤规则配置、导出

### 🐕 [ swift-doc - Generates documentation for Swift projects](https://github.com/SwiftDocOrg/swift-doc)

[@水水](https://www.xuyanlan.com)：swift-doc 可以为你的 Swift 项目生成文档，能给定 Swift 文件的目录，为每个类、结构、枚举和协议以及顶级类型别名、函数和变量生成 CommonMark（Markdown）文件。
swift-doc 支持以命令的形式安装和使用在 MacOS 和 Linux 系统上。
虽然目前输出仅限于 CommonMark，但计划同时支持 HTML 和其他格式。该项目正在积极开发中，预计在首次稳定发布前会有显著变化。

## 代码

### 🌟 🐕 [开源 | Objective-C & Swift 最轻量级 Hook 方案](https://mp.weixin.qq.com/s/wxigL1Clem1dR8Nkt8LLMw)
[@zvving](https://github.com/zvving)：字节跳动技术团队带来一套基于消息转发机制的 instance 粒度的轻量级 hook 方案：SDMagicHook。

相较于 [Stinger](https://github.com/eleme/Stinger) 和 [Aspects](https://github.com/steipete/Aspects)，SDMagicHook 只支持实例维度的 hook，函数替换、消息调度等过程都在 objc 层面处理，框架实现更轻量，源码更易懂。本文详细描述了其实现过程，推荐阅读学习。

### [swift-checkit](https://github.com/karwa/swift-checkit/)

[@享耳先森](https://github.com/iblacksun)：这个库起源于作者遇到一个 bug：自定义了一个  `collection`，但对 index 处理和 SDK  行为不一致。所以作者写了这个库，面向协议的接口抽象了测试用例，一行代码即可完成协议 Conformance 的测试。

### 🌟 🐕 [Flutter：图像的爆炸动画💥](https://juejin.im/post/5e3c17876fb9a07cab3a87fe?utm_source=gold_browser_extension)

[@CrazyCoderShi](https://github.com/CrazyCoderShi)：文章展示了如何使用 Flutter 粒子动画完成一个效果爆炸的动画效果，效果流畅.

## 书

### [Thinking in SwiftUI](https://www.objc.io/books/thinking-in-swiftui/)

[@老驴](https://www.weibo.com/6090610445)：objc.io 又要出新书了！这次是 SwiftUI 相关的书。根据目前的简介，本书将会专注在帮助大家从面向对象编程的思维转变成声明式编程。

现在预购的话可以 early access 本书的内容，不过，估计喵神之后也会出对应的中文版，如果想看中文版的童鞋可以再等等。

## 内推

老司机周报团队联合知识小集和 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）


