# 老司机 iOS 周报 #12 | 2018-03-26

![ios-weekly](../assets/ios-weekly.png)

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

![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg)

同时也支持了 RSS 订阅：https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。

你也可以为这个项目出一份力，如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们，我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。

## 新闻

### [快应用标准今日发布，开发者需要知道些什么？](https://mp.weixin.qq.com/s/e5UlzM82z2tM-ow6iRfJTQ)

9 大安卓厂商联手推出快应用标准。前有小程序，后来快应用，大前端的大潮之下，越来越多的新技术在冲击着移动端开发。"轻型"应用其实也代表着一种用户的诉求，限制大小，即装即用，简单有效。对这么多层出不穷的大前端技术，作为客户端原生开发的的朋友们有什么自己的想法么？来听听 Bang 对快应用的评价吧——『[对快应用的看法 from Bang](http://blog.cnbang.net/internet/3554/)』。

### [揭秘苹果 HomePod 广告里会动的公寓](http://www.ifanr.com/1000374)

不久前，苹果专门为 HomePod 拍摄了一支视频广告《Welcome Home》，上线 2 天全球观看次数突破 600 万，社交媒体上好评如潮。这篇文章通过苹果发布的拍摄纪录片，揭秘了该广告特效是如何完成的，对于果粉来说看到这些花絮也会是很有趣的。

## 文章

### 🐢 🌟 [iOS 中的 JS](https://zhuanlan.zhihu.com/p/34646281)

本文详细的介绍了跨端开发中 JSCore 的使用。阐述了为什么要关注跨端开发，JS 如何与本地 OC 代码互相调用，以及 JSPatch 如何结合 JS、OC Runtime 做到修改 iOS 运行代码。作者有大量 Weex 开发经验，行文流畅，想要了解 JSCore 的同学请好好学习。

### 🐕 🌟 [从 babel 讲到 AST](https://juejin.im/post/5ab35c3cf265da23771951a2)

作者从 babel 转换的一个简单场景出发，引出了代码转换过程中核心的中间形式：AST（抽象语法树），并且用 JS 实现了要生成 AST 所需要进行的词法分析和语法分析过程。比较值得推荐的是阅读本文并不需要编译原理基础，非常适合这一块基础不好的同学阅读。再加上其 JS 写得也比较通俗易懂，建议大家可以参考其逻辑用自己熟悉的语言实现一下，加深理解的同时也有很大的可能提起对编译过程的兴趣。

如有兴趣，在实现 AST 的解析和生成后，可以考虑写一个简单的解释器，来执行该 AST。

### 🐢 🌟 [使用 ASDK 性能调优](https://draveness.me/asdk-rendering)

无论是 AsyncDisplayKit 亦或是微博客户端使用的 CoreText 渲染 TableViewCell。共同的思想都是如何在非主线程里解决 UI 渲染的问题。
阅读文章的时候需要把握住两个点：

1. 如何在异步线程绘制 UI。
2. 异步绘制 UI 结束之后选择什么时机刷新 UI。

这篇文章可以让你更细致的了解 iOS 底层绘制的过程。 强烈推荐。

### 🐢 [Bestswifter 的 2017 年度总结](https://github.com/bestswifter/blog/blob/master/articles/2017-conclusion.md)

Bestswifter 的 2017 年度总结，回顾了作者近一年来的所学内容并且穿插了相应知识点的详细总结博文，主要包括以下几点：

- 工作效率脚本和工具；
- iOS 自动化测试之 Appium；
- 与网络相关的实践技巧和底层原理；
- Cocoapods 与 Xcode 工程配置；
- 拓展 JS 方向的知识，探索自己的全栈化道路。

除此之外，作者还对自己工作方面的情况做了简单概述，并且制定了接下来的学习方向，对我们而言有一定的借鉴意义。

### 🐕 🚧 [Five Options for iOS Continuous Delivery without Fastlane](https://medium.com/xcblog/five-options-for-ios-continuous-delivery-without-fastlane-2a32e05ddf3d)

使用 fastlane 作为 iOS 开发中的自动化工具已经是一个很主流的选择。然而 fastlane 也有不少问题：大多数开发者对 Ruby 环境都不熟悉；fastlane 基于苹果的 API 封装，如果苹果开发平台修改接口 fastlane 的使用就会受到影响；配置 lane 的脚本语言也需要不少时间；因为是 Ruby 写的虽然开源也很难贡献代码；fastlane 的 issue 维护也不太活跃，超时后的 issue 会自动关闭，会出现一个问题有好几个 issue 的情况。

基于以上的出发点，作者对于摆脱 fastlane 采用其他工具进行自动化进行了探索。选择有：苹果原生开发者工具；Xcode server；云端 CI 服务；Apple + BuddyBuild；基于 Swift 平台的选择。

### 🐕 [iOS layoutMargins 的坑：一个活久见的 bug](https://juejin.im/post/5aae37576fb9a028bf051a2c)

作者通过实际开发中的调试惨案，介绍了 `insetsLayoutMarginsFromSafeArea` 这个大家不太熟悉的属性的作用。因为作者没有进行更深入的拓展，所以推荐大家看一下《iOS 成长之路 3 期·WWDC17 内参》中的《[让你的 UI 适配 iOS 11 吧](https://xiaozhuanlan.com/topic/8497036152)》这篇文章，文章对包括 Safe Area 在内的 Layout Margin 有很详细的介绍。

### 🐎 [A helper for working with temporary files in Swift](https://oleb.net/blog/2018/03/temp-file-helper/)

相信大家在 App 中经常需要操作临时文件，但文件的维护是件麻烦事，`Ole Begemann` 对此进行了封装。

### 🐎 [iOS 下如何一键调试 Push](http://mrpeak.cn/blog/ios-debug-apn/)

Peak 分享了他如何通过脚本去定位在推送失败时，判断 Apple 服务器有没有发送 Push 的实践经验。他不但分享了一个挺实用的小工具，也给我们分享了一个他在 Facebook 工作时学到的一个习惯 -- 尽可能的用工具去提供效率。

## 代码

### [Tiercel](https://github.com/Danie1s/Tiercel)

纯 Swift 的下载框架，文档清晰，代码整洁。支持多任务并发、大文件下载和断点续传等特点，满足下载的大部分需求。

## 音视频

### 🐎 [App Store Product Page](https://developer.apple.com/videos/play/insights/app-store-product-page/)

Apple 邀请了概念画板、Grokker、TypeShift、War Dragons 和 codeSpark 学院等 App 的开发者，分享如何利用 App Store 产品介绍页面上的元素，以便吸引更多用户下载。包括 App 的名字和次标题、设计 App 图标、使用 App Preview 视频和截图、编写 App 描述和促销文案以及利用全新的 promoting in-app purchases。

## 本期编辑

[@没故事的卓同学](https://weibo.com/1926303682/profile)，[@四娘](https://kemchenj.github.io)，[@mmoaay](https://weibo.com/u/1302422271)，[@享耳先森](https://github.com/iblacksun)，[@EyreFree](https://weibo.com/eyrefree777)，[@Damonwong](https://weibo.com/damonone)，[@折腾范儿_味精](http://weibo.com/agvicking)，[@张嘉夫](https://weibo.com/2949394297)，[@AidenRao](https://weibo.com/AidenRao)，[@Parsifal](https://weibo.com/parsifalchang)， [@叶孤城](https://weibo.com/u/1438670852)，[@aaaron7](https://weibo.com/aaaron7)

## 说明

🚧 表示需翻墙，🌟 表示编辑推荐

预计阅读时间：🐎 很快就能读完（1 - 10 mins）；🐕 中等 （10 - 20 mins）；🐢 慢（20+ mins）


