# 老司机 iOS 周报 #94 | 2019-12-09

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

## 新闻

### 🐎 [Flutter Interact 2019 即将到来！全球同步直播最先了解新动态](https://mp.weixin.qq.com/s/28hbpByPwjSNETO0W8b4GQ)

[@zvving](https://github.com/zvving)：Flutter Interact 将在 12 月 11 日于纽约布鲁克林举办，聚焦于跨平台打造精美体验。现场提供同声传译的直播服务，对 Flutter 感兴趣的小伙伴不要错过！

## 新手推荐

### 🐎 [不同平台操作体验的差异和适配](https://mp.weixin.qq.com/s/Ze4m95HeFoUXoP7FLbHcmQ)

[@极速男孩](https://github.com/ztlyyznf001)：flutter 在 iOS 和 Android 当中不同的适配效果，包括不同的手势，控件效果和字体图表等。


## 文章

### 🐢 [开发企业级移动APP，Flutter准备好了吗？](https://mp.weixin.qq.com/s/M8x44Fb0NdLlr0TfKo_1wA)

[@CrazyCoderShi](https://github.com/CrazyCoderShi)：Flutter 自 1.0.0 正式版发布以来, 已经一整年过去了. 在过去的一段时间里面, 官方开发团队始终保持着飞速的迭代效率, 社区的发展状况也让人欣喜, 国内外各大厂开始投入精力. 即使如此, Flutter 在生产中的使用覆盖率仍不是太高, 那么 Flutter 在生产中的表现到底如何? 本文从以下几个角度, 和你深入探讨 Flutter 企业级开发的方方面面:

- 架构
- 开发环境
- 用户界面
- 访问硬件功能
- 安全性
- 其他杂项

### 🌟 🐕 [纷争再起：Flutter-UI 绘制解析](https://juejin.im/post/5c866cf6f265da2de165d89d)

[@四娘](https://kemchenj.github.io)：作者通过生动形象的方式跟我们讲述了 Flutter 的 Widget 树实现，如何通过轻量级的视图树达成高效的视图树重建，与我们熟知的 View 进行协作完成最终渲染。

### 🌟 🐕 [​Flutter 沙龙回顾 | 如何缩减接近 50% 的 Flutter 包体积](https://mp.weixin.qq.com/s/Ls3cDcqjlyOX80PXUO0wRw)
[@老驴](https://www.weibo.com/6090610445)：这是字节跳动技术团队做的一篇针对 Flutter 实际落地应用中针对包体积优化的文章。

文章比较长，干货非常多，看得出字节跳动团队在 Flutter 落地应用上做出的努力。虽然大家在自己的项目中并不一定用得到这些优化，但是不妨一读，一定会对大家的实际项目有帮助。


### 🌟 🐕 [Key​Value​Pairs](https://nshipster.com/keyvaluepairs/)

[@xiaofei86](https://weibo.com/xuyafei86)：Swift 5 将 DictionaryLiteral 重命名为 KeyValuePairs [SE-0214](https://github.com/apple/swift-evolution/blob/master/proposals/0214-DictionaryLiteral.md)。本周，NSHipster 就为我们带来 KeyValuePairs 的详解。本文延续了 mattt 一贯的“哲学”开场，由宇宙学对事物的分类到阴阳、五行、八卦，从而引出 Array、Set 等 Swift 中的常用集合类型（不得不感叹 mattt 大神的博学）。通过本文对 KeyValuePairs 的介绍，与 Dictionary Literal 的对比以及应用，我们会对 Array、Set 和 Dictionary 之间的根本区别，以及他们在 Swift 中的工作方式产生更加深入的理解。

### 🐕 [Making Swift code extensible through plugins](https://www.swiftbysundell.com/articles/making-swift-code-extensible-through-plugins/)

[@EyreFree](https://github.com/EyreFree)：本文介绍了如何用 Plugin 模式提高代码的可扩展性。Plugin 是一段代码，可以将其插入另一种类型或系统以修改其功能。Plugin 有许多不同的形式和规模，比如文中举出的例子 `typealias Plugin<T> = (T) -> T` 就是一个简单的 Plugin。合理利用该模式，能降低我们所编写的代码的复杂性，但如果滥用也会导致系统代码过于分散，一切都取决于我们要构建的软件系统类型。对架构和设计模式感兴趣的同学一定不要错过。

### 🐕 [Vision Framework: Working with Text and Image Recognition in iOS 13](https://www.appcoda.com/animal-recognition-vision-framework/)

[@张嘉夫](https://github.com/josephchang10)：2 年前 Apple 在 WWDC 2017 上发布了 *Vision* 框架，一个令人惊叹但又十分简便的框架，让计算机视觉功能的开发更加容易。不论是文字检测、面部识别、条形码扫描还是与 Core ML 配合执行机器学习任务都可以用这个框架实现。今年，Apple 在 WWDC 2019 为 Vision 框架带来了更多新功能，着实将计算机视觉领域向前推进了一步。AppCoda 在这篇文章里会带领大家构建一个叫 *Snapcat* 的应用，使用 `Vision` 全新的动物检测器来检测喵星人、添加滤镜然后拍照。然后 AppCoda 会教你如何利用全新的 `VisionKit` 来扫描名片，就像 iOS 原生的备忘录 app 一样。最后，Appcoda 还会展示如何对扫描后的名片进行文字识别。

### 🐎 [Faster way to download and install Xcode](https://blog.kulman.sk/faster-way-to-download-and-install-xcode/)

[@JimQ](https://github.com/waz0820)：平时下载 Xcode 最便捷的渠道就是 App Store，但只能用于下载最新的正式版，而且用过的人都知道，其下载速度和成功与否，除了看网速，有时还要看人品。所以我们需要更多的解决方案：

1. 使用 Apple Developer 官网在浏览器下载最新的正式版或 beta 版；
2. download/more 路径下下载更多之前的版本；
3. 使用 aria2 脚本加速下载；
4. .xip 包双击之后会有一个合法性验证，可以使用命令跳过这个步骤；
5. 先删除 Xcode 再安装比覆盖安装速度更快。

## 代码

### [NXDrawKit](https://github.com/Nicejinux/NXDrawKit)

[@老峰](https://GesanTung.github.io/)：NXDrawKit 是使用 Swift 开发的一个简单易用的手写绘图板类库，提供了绘图应用的基本功能如：撤销、恢复、清除、保存、设置线条颜色，粗细，透明度等，使用它可以实现类似你画我猜，手写签名等功能，因为是作者第一个 Swift 项目，所以代码风格比较偏 OC，另外 Palette and ToolBar 自定义支持并不是太友好。

### [LEEAlert](https://github.com/lixiang1994/LEEAlert)

[@looping](https://github.com/looping)：LEEAlert 是一个可自定义 Alert 和 ActionSheet 样式的视图控件库，支持的功能特性相当丰富，能满足绝大多数弹窗提示的需求。通过 `.config` 开始链式调用，整体语法结构还是非常优雅的，有感兴趣的小伙伴可以参与共同维护。

## 内推

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


