# 2018@Swift大会

> 原文：https://pjhubs.com/2018/09/16/2018-Swift%E5%A4%A7%E4%BC%9A/
>
> 作者：PJHubs · 发布于 2018-09-16

![IMG_2134.JPG](https://i.loli.net/2018/09/16/5b9e5e213df6c.jpg)

期待了两个多月的 **2018 @Swift 大会** 终于来了！！Andyy Hope 、 喵神、戴铭哥、巧哥、虾神、莲叔等等众多大佬都做了分享。其中让我非常意外的是喵神，之前只是在喵神的各种社交网络上了解到他，但是没想到喵神的声音居然这么萌～戴铭哥普遍被大家认为是被代码耽误的画家哈哈哈哈，虾神下午的闪电演讲瞬间打通了我对 Swift 做服务端的顾及（突然很想用在毕设中哈哈），莲叔的演讲居然是我唯一一场坚持没听完的 😅 ，因为我对机器学习还没步入学习，到最后一部分感觉要癫狂了哈哈。

## 第一天

![IMG_2135.JPG](https://i.loli.net/2018/09/16/5b9e68733237e.jpg)

首先开场的是 Andyy Hope 的《 `iOS Architecture improvements with Swift` 》，主要是在讲他的新做的一个框架 [`NEMO`](https://github.com/andyyhope/nemo)，Andyy 分享 `MVC` 、 `MVVM` 、 `VIPER` 三个框架的优缺点，最后引出了 `NEMO` ，整场听下来我唯一觉得不错的地方就是耦合切得很开，但是对于 `NEMO` 框架中最为亮点的地方—— `JSON` 控制 UI 渲染这点我还是抱有观望的态度，之前也有其它框架通过 `JSON` 去控制 UI 组件的搭建或者渲染，这种做法的缺点我个人认为是需要写很多基础组件，一旦有新的需求新的设计，需要重写的部分会比较多，但是，这同时也是这类型框架的优势，如果产品的设计需要重用的地方较多、逻辑比较清晰，写好基础组件后可以完全依托服务端控制客户端的显示逻辑，但是需要再做一些额外容错处理。我个人是比较喜欢 `NEMO` 的解耦方式，但是这种通过 `JSON` 控制 UI 渲染的方式还需要各位大佬们再踩踩坑哈哈。

![IMG_2141.JPG](https://i.loli.net/2018/09/16/5b9e6f04e62ae.jpg)

第二场是喵神的从《从 Swift 到机器学习》 ，不得不说喵神真是喵神啊！哈哈哈，全场笑点不断，而且喵神完全可以当 @Swift 大会的吉祥物了。主要是利用了新推出的 `CreateML` 框架做了一个手势识别，整场听下来，理解了 `CreateML` 应用的场景在“传统方向”非常方便，准确率非常高，识别个花花草草、猫猫狗狗小动物啥的完全不在话下，就连喵神只用现场录制的两个 10s 视频都能有 85% 左右的准确率，但是在后边的分析中推断得出可能这 85% 的准确率只是识别出当前画面中有没有手而已，并不是这个识别这个手势有没有。

![IMG_2143.JPG](https://i.loli.net/2018/09/16/5b9e6f51782e1.jpg)

第三场是戴铭哥的《怎么用 Swift 写解释器以及实用场景》，其实说实话，现场的大部分同学都被戴铭哥十分酷炫吊炸天的 keynote 炫翻了，群里疯狂刷“被代码耽误的艺术家”哈哈。编译原理刚上完，当时我也是用 Swift 写了一个 C 的解释器，只完成到词法/语法分析这两个过程，如果你感兴趣的话可以看[词法分析器](http://pjhubs.com/2018/04/16/macOS开发（词法分析器）/)和[语法分析器](http://pjhubs.com/2018/06/13/macOS开发（语法分析器）/)，[github 地址](https://github.com/windstormeye/MacMorePractices)。戴铭哥的思路跟老师教的大同小异，大家都在说“如果当初我的编译原理也是这么教的就好了” 😅 。会后也有人问了戴铭哥，“这都 8102 年了，为啥还要搞编译器”，哈哈下午就被莲叔打脸了（后文讲）。

下午的第一场是唐巧，巧哥的《猿辅导从 OC 到 Swift 的迁移之路》，一直在思考和记录巧哥说的东西，还没消化完就结束了。巧哥从他们公司的三个项目“猿题库”、“猿题库老师端”和“小猿搜题”分别讲述了三种迁移之路，第一个是 OC 和 Swift 混编，用巧哥的话来说到最后就是个悲伤的故事，刚开始团队成员立了个 flag —— “以后只写 Swift ”，然后现在又退回去只写 OC 哈哈哈哈；第二个是纯粹的 Swift 工程，这回想着重新起一个全新的 Swift 工程总可以爽了吧，然而总体的感受是有点怪异的难受，涉及到了一个 C++ 的直播库以及一些其它的问题，这些众众问题聚合起来就导致产生了一种怪怪的、有点难受的感觉，但觉得不是写不下去，现在也一直在写 Swift ；第三个是巧哥所在的团队，我没想到的是，他们居然采用了 OC 持续开发，然后还是起一个全新的 Swift 工程，等到未来的某一个时机 Swift 工程差不多了，然后直接迁移过去，但是我们都知道嘛，问题就是永远跟不上，因为只要 OC 工程还在开发，那就很大概率赶不上（天朝这么频繁的需求😅），最后采用了抽离 OC 公共业务组件，引入 Swift 工程中，有时间再回去改造。

这种做法是可以，但是真让我想不到的是居然巧哥他们可以允许一件这么大的事情做两次哈哈，不过这也是个思路，如果实在没时机的话，可以把老 OC 工程的业务组件解耦出来形成组件，挂载在 Swift 工程中。

第二场是刘冠杉的《做一个有趣的多人 AR 游戏》。说实话我对杉哥是完全不了解，这个 topic 对新手比较友好，咱实话实说啊，这个 topic 我觉得衫哥可以做得更加深入一些。

第三场是虾神的闪电演讲。十五分钟就结束了，给我们过了一遍 Swfit 服务端的东西。前段时间差点没忍住用 `Vapor` 写现在的一个项目服务端，最后还是改为了用 `Django` ，但是经过虾神的这一番介绍，`Vapor` 经过了利用 `SwiftNIO` 的重写后性能大大提升，下次找个机会 all in 。

第四场是小鱼的《Strings Seven Ways》，前面铺垫了价值非常高的字符串编码，非常非常棒！感觉小鱼对语言研究得比较多的人哈哈，日语、韩语张口就“忽悠”大家 😅 。毕竟 `String` 算是 Swift 中质量最高的几个类之一了，各种强大的特性也就不在话下。

第五场是莲叔的《Swift For Tensorflow》，刚开始还好，到后边因为 keynote 看的实在是太吃力，不但代码又多又小，给的一些公式也没来得及笑话，最后开始返回去刷 Andyy 上午的 pdf 。


## 第二天
第二天是 workshop ，总共有三场，第一场是 Andyy 的 `NEMO` 框架的实际讲解，今天仔细的看了给的 demo ，感觉优势慢慢的体现出来了，提问环节大家对其都非常感兴趣，有同学也提出了我之前的疑惑，`NEMO` 是否能够较好的依赖服务端，Andyy 给的答复是没问题，这位同学又接着问，如果需要插入一些本地逻辑，比如 `NEMO` 怎么处理？Andyy 给的答复是“把用户 ID 传过去，让服务端去做，然后返回确定逻辑重新渲染”。

第二场是关于逆向的，《iOS应用安全与逆向》的作者，刚开始我还能跟得上，到后边跳界面，各种命令，没接触过实在跟不上 😅 ，不过也让我重新认识到了原来 iOS 还可以这么玩。之前一直觉得安全、逆向需要积累很多东西才能开始（实际上确实是这样），但现场这么一来一回，其实可以从现在就开始，做这个事情作者说主要靠的是兴趣，而且其中效益很大（咳咳）。

第三场是 `Hero` 和 `CollectionKit` 的作者，`Hero` 是我之前在写 [Bonfire](https://github.com/windstormeye/Bonfire) 时依赖很重的一个转场动画库，用起来非常方便。两个小时！！！两个小时中作者不但带我们一起写了几个 demo ，还分析了 `CollectionKit` 的一些实现流程，能说两个小时实在是太强了。

-----

以上就是本次 2018 @Swift 大会的主要内容，给我的帮助很大，认识了很多同学，也看到了大家对 Swift 生态的关注和积极，嗯，iOS 开发还有人要哈哈。最最最重要的是，我没想到喵神这么尽职！！！大会两天全程陪同，虽然喵神也是讲师兼职翻译，这两天我也在偷偷的观察喵神（小迷弟哈哈），不敢跟喵神交流，发现其实喵神对国内的 iOS 生态非常在意，非常关注国内的 iOS 情况，同时也非常不理解在国外已经火得一塌糊涂的 swift 为什么在国内还是 OC 大行其道哈哈哈。

在 workshop 的最后，我以为几乎没有机会能够和喵神说上话，更别说合影了。没想到最后一波抽奖，每个讲师都只发一个红包，有缘人自取，没想到喵神的红包居然被我抢到了！！！

![IMG_2167.JPG](https://i.loli.net/2018/09/16/5b9e7d7fdf1a3.jpg)
