# 老司机 iOS 周报 #19 | 2018-05-14

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/ios-weekly.png)

老司机 iOS 周报，只为你呈现有价值的信息。

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

## 新闻

### [iOS 11 App 上传规则变化](https://developer.apple.com/news/?id=05072018a&utm_campaign=iOS%2BDev%2BWeekly&utm_medium=email&utm_source=iOS%2BDev%2BWeekly%2BIssue%2B351)

2018 年 7 月份开始，所有上传 App Store 的应用都必须是基于 iOS 11 SDK 编译并适配 iPhone X 的分辨率。当然，Apple 也对上传流程做了进一步的优化。更多细节，请参照：[https://developer.apple.com/ios/submit/](https://developer.apple.com/ios/submit/)

### [What's New In Vapor 3](https://geeks.brokenhands.io/blog/posts/whats-new-in-vapor-3)

Vapor 3 对 Vapor 进行了彻底的重新设计，为未来几年的发展奠定了基础，让 Vapor 能够成长和进化为最好的服务器端 Swift 框架。Vapor 3 现在完美支持 Swift 4 的 `Codable`，并且从同步阻塞架构进化为异步非阻塞架构，同时还采用 Apple 新的开源服务器端框架 [SwiftNIO](https://github.com/apple/swift-nio) 来管理所有网络连接和 HTTP 解析。

### [在 apple/swift 的 tensorflow 分支上开发 Swift for TensorFlow](https://forums.swift.org/t/swift-for-tensorflow-to-be-developed-on-tensorflow-branch-on-apple-swift-on-github/12595)

[Swift for TensorFlow](https://www.tensorflow.org/community/swift) 的 Swift 编译器开发在 [google/swift](https://github.com/google/swift) 分支上，Ted Kremenek （Swift 项目新主管）和 Chris Lattner（Swift 之父）都认为将这个分支上的工作移动到 [Apple/Swift](https://github.com/apple/swift) 上直接开发，对 Swift 社区更有益处。这样会让 Swift 编译器开发的协同工作集中到一个中心，而且也能避免大家对于 Swift 产生方言的担忧。

新分支 tensorflow 将会在近期创建，tensorflow 上开发的新功能，会通过 [Swift 发展流程](https://github.com/apple/swift-evolution)，将一部分合入 Swift 主分支，tensorflow 分支本身，也会密切追踪 Swift 主分支的更新。

### [Ulysses 13 将更好的支持代码展示](https://ulyssesapp.com/blog/2018/05/preview-code-blocks/)

最好的 MarkDown 写作工具之一 Ulysses 对代码的展示一直不够友好，最近宣布将在下个版本中优化对代码段的展示，并且支持 github style。

## 文章

### 🐢 [AVAudioEngine Tutorial for iOS: Getting Started](https://www.raywenderlich.com/185090/avaudioengine-tutorial-for-ios-getting-started)

音频处理一直是 iOS 开发中非常棘手的一部分，因为在 iOS 8 之前只能使用低级的、晦涩难懂的 Core Audio 框架，但随着 iOS 8 发布了高级的音频工具集 **AVAudioEngine**，我们不再需要深入挖掘 Core Audio 也可以实现音频处理，这篇教程会为你介绍如何使用这个新工具。

### 🐎 [深入了解Flutter界面开发](https://mp.weixin.qq.com/s/z2r2OmnY7r7dQrkO8ndkFQ)

最近一段时间，通过学习浏览器内核的相关思想来做界面开发的框架层出不穷。从 Reactive Native、Samurai Native、Weex 到最近的 Flutter、Tangram，各个公司都结合自己的业务时间推出了对应的轮子。不过反过来想，轮子多的核心原因恰恰是其实目前还没有完美的轮子。

这篇文章并不是 Flutter 的教程，而是重点介绍了 Flutter 的渲染流程和原理，以及探讨了一些背后的 immutable 和 react 之间惺惺相惜的设计思想，很有价值。如果自己所在的团队有这类轮子需求的同学，一定不要错过。

### 🐎 [DEALING WITH DATES](http://martiancraft.com/blog/2018/05/dealing-with-dates/)

时间对于在日常生活中的我们是简单的概念，但是在编程领域却是困难的。本文介绍了在 Apple 平台下，如何利用系统框架来对时间进行正确的处理。

### 🐎 [Codable 与 JSONSerialization 性能测试](https://flight.school/articles/benchmarking-codable/)

Swift 4 的新功能 Codable 可以自动生成解析 JSON 的构造器，但这些自动生成的代码跟我们手写的有什么区别呢？这篇文章的作者写了一个性能测试去比较 JSONDecoder 和 JSONSerialization，文末作者表示虽然 Codable 生成的代码效率只有手动解析的一半，但比起这点性能消耗，绝大部分情况下 Codable 带来的便利更加重要。

### 🐢 [从源码看微信小程序启动过程](https://tech.youzan.com/weapp-booting/)

这篇文章记录了作者经过 3 个礼拜研究后，对小程序框架的基本代码结构，启动流程以及程序实例化过程的理解，并且从小程序的启动流程入手一步步解答了“框架对传入的对象等到底做了什么”的疑问。

### 🌟 [Memory Leaks in Swift](https://medium.com/flawless-app-stories/memory-leaks-in-swift-bfd5f95f3a74)

`Leaks` 相关的内容在业内虽然已经有很多文章了，但多数是以 OC 来做示例，文章从 Swift 角度讲 `Memory Leaks` 是什么、有哪些危害？为什么会发生 `Leak`？最后重点介绍了消除 `Leaks` 的几种方式。

### 🐎 [Making illegal states unrepresentable](https://oleb.net/blog/2018/03/making-illegal-states-unrepresentable/)

作者以 URLSession 为例，大致描述了如何通过 Swift 的强类型来消除不明确的状态。在编译器的帮助下，编写出更加逻辑缜密的代码。

### 🚧 🐎 [Capture iOS simulator video for App Preview](http://www.avanderlee.com/workflow/capture-ios-simulator-video-app-preview/)

这里介绍了一个 Xcode 模拟器的命令行小技巧，很方便的用简单的命令行来实现将模拟器中的操作录制成录像，方便上传到 AppStore 的录像展示之中，浏览该网页需要翻墙。

### 🐢 🌟 🚧 [Best iOS hacks from Twitter: March & April Edition](https://medium.com/flawless-app-stories/best-ios-hacks-from-twitter-march-april-edition-8b538f553c83)

3 月 和 4 月整理自 Twitter 的各种 iOS 开发、调试小技巧与冷知识，非常干的干货，推荐花时间仔细阅读，绝对会有所收获。

## 音视频

### [RWDevCon 2018 Vault Video Bundle](https://store.raywenderlich.com/products/rwdevcon-2018-vault-video-bundle)

此系列视频收费 $99，共 18 个主题：如 `Serialization in Swift`、`Auto Layout`、`Clean Architecture`、`Android`、`TDD`、`WKWebView`、`ARKit`、`Metal` 等，如对其中两个主题感兴趣也就值回票价了。

## 内推

### [丁香园丁香妈妈团队招中高级 iOS 工程师](https://www.liepin.com/job/1913949377.shtml?imscid=R000000075&ckid=533d5430df9380a3&headckid=533d5430df9380a3&pageNo=0&pageIdx0&totalIdx=0&sup=1&d_pageSize=40&siTag=kW6OQA_mI-f6OR9izNLFIw%7EfA9rXquZc5IkJpXC-Ycixw&d_headId=9ed780f47f2296b01fd302251c1dcb7e&d_ckId=9ed780f47f2296b01fd302251c1dcb7e&d_sfrom=search_fp&d_curPage=0&d_posi=0)

新组建的团队，有电商方面开发经验优先，有意向请发送简历到 gp@dxy.cn

### 百度文库 / 百度阅读，招聘 Android / iOS / Fe 高级 / 资深工程师

百度文库 / 百度阅读，招聘 Android / iOS / 前端 高级 / 资深工程师，坐标北京百度科技园，有意向请发送简历到 wangdefu@baidu.com

## 关注我们

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

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

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

## 本期编辑

[@没故事的卓同学](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)，[@aaaron7](https://weibo.com/aaaron7)，[@方秋枋](https://weibo.com/100mango)

## 说明

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

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


