# 老司机 iOS 周报 #15 | 2018-04-16

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

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

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

## 福利

### [周报读者专属 Reveal 50 元优惠券](https://h5.weidian.com/m/coupon/get.html?coupon_id=5618711&shop_id=457915687)

我们和 Price Tag 的合作，给读者送一个小福利，点击上面链接可以领取 Reveal 14 优惠券。领取后到这里可以使用：[购买链接](https://weidian.com/item.html?itemID=2264937860) 。

## 专栏

### [onevcat 的小专栏：开发笔记簿](https://xiaozhuanlan.com/onevcat)

记录了喵神日常开发时遇到的问题和解决方案，同时也会收藏一些学习时记录的笔记，随想等。定价 ¥99，因为至少会有一两年的长期更新，所以这个价格是非常良心的。而且目前已经更新了 9 篇，涉及的范围也比较广，值得订阅！


## 文章

### 🐢 🌟 [深入浅出 GCD 系列文章](http://cocoa-chen.github.io/2018/03/01/%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BAGCD%E4%B9%8B%E5%9F%BA%E7%A1%80%E7%AF%87/)

这是 [cocoa-chen](https://github.com/cocoa-chen) 阅读 [GCD 源码](https://opensource.apple.com/tarballs/libdispatch/)后分享的系列文章。该系列文章以常用的 5 个 GCD API 为切入点，从『使用场景』到『原理深究』再到『总结』循序渐进十分细致地阐述了 GCD 是怎么实现这些 API 来管理维护线程池的。系列文章一共有 6 篇，大家可以各取所需：

- [深入浅出 GCD 之基础篇](http://cocoa-chen.github.io/2018/03/01/%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BAGCD%E4%B9%8B%E5%9F%BA%E7%A1%80%E7%AF%87/)
- [深入浅出 GCD 之 dispatch_queue](http://cocoa-chen.github.io/2018/03/05/%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BAGCD%E4%B9%8Bdispatch_queue/)
- [深入浅出 GCD 之 dispatch_semaphore](http://cocoa-chen.github.io/2018/03/08/%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BAGCD%E4%B9%8Bdispatch_semaphore/)
- [深入浅出 GCD 之 dispatch_group](http://cocoa-chen.github.io/2018/03/12/%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BAGCD%E4%B9%8Bdispatch_group/)
- [深入浅出 GCD 之 dispatch_once](http://cocoa-chen.github.io/2018/03/15/%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BAGCD%E4%B9%8Bdispatch_once/)
- [深入浅出 GCD 之 dispatch_source](http://cocoa-chen.github.io/2018/03/19/%E6%B7%B1%E5%85%A5%E6%B5%85%E5%87%BAGCD%E4%B9%8Bdispatch_source/)

### 🐢 [深入理解 Swift 派发机制](https://kemchenj.github.io/2016-12-25-1/)([英文原文](https://www.raizlabs.com/dev/2016/12/swift-method-dispatch/?utm_campaign=This%2BWeek%2Bin%2BSwift&utm_medium=email&utm_source=This_Week_in_Swift_114))

2016 年的一篇文章，主要内容是讲关于 Swift 各种类型的方法派发机制，以及 NSObject 与 Swift 原生类型的差异等等，读完这篇文章我才第一次对于 Swift 的派发机制有了比较清晰全面的认识，虽然有一小部分内容已经过时了，但还是强烈推荐大家看一下。

### 🐎 [iOS App 连续闪退时如何上报 crash 日志](http://mrpeak.cn/blog/ios-instacrash-reporting/)

如果是我们自己开发一套 crash 日志收集系统的话，可能就会发现在 App 启动阶段就连续闪退的场景下往往无法正确上报崩溃日志。Peak 从『如何检测连续闪退』和『如何在闪退后继续上传日志』两方面分析和解决了这个痛点。

另外，微信读书团队以前也分享过类似的方案——[iOS 启动连续闪退保护方案](https://wereadteam.github.io/2016/05/23/GYBootingProtection/)，并且该方案额外集成了自修复系统。

### 🐎 [How To Keep Learning After 50 and Other Ways to Hack Your Brain at any Age](https://www.raywenderlich.com/189082/how-to-keep-learning-after-50-and-other-ways-to-hack-your-brain-at-any-age)

这篇文章通过介绍了“神经可塑性”（Neuroplastcity）理论，论证了活到老、学到老是有科学依据的。不仅如此，该文还提出年龄逐渐变大之后如何“hack”自己的大脑来让自己更有效的学习的方法。有趣的是，文章为了讨论这个话题，还邀请了 25 名年长的艺术家、教练和程序员来参与调查，他们中几乎所有都在持续的学习，尤其是其中还有从 Fortran 一路写到 Swift 的程序员，可以说是相当资深了。

作为焦虑的准中年程序员，这篇文章对我的触动可谓是很大的。除了内容本身值得思考之外，文风读起来就像《老人与海》那样充满力量感。值得收藏！

### 🐢 [Behind-the scenes improvements in Swift 4.1](https://medium.com/@slavapestov/behind-the-scenes-improvements-in-swift-4-1-269dd56e30c2)

掌握编程语言的设计与实现一直以来都处于技术圈鄙视链的顶端，相信绝大多数程序员都曾经跃跃欲试。如果你是对 Swift 语言的实现原理感兴趣的同学，一定不要错过这篇文章。

文章标题看上去好像也就是列举一下 Swift4.1 一些改进，但实际上是针对 Swift 语言设计上面临的诸多问题和解决方案进行了深入讨论，包括但不限于为什么 protocol 中默认实现的方法不能返回 `self`，OC 类桥接到 Swift 中都发生了什么，以及泛型参数支持中父子关系如何实现等等。看完后对于”为什么 4.1 的编译速度好像变快了？”以及”Swift 的 ABI 什么时候才能稳定？”这两个经典问题，你应该会有自己的答案。


### 🐕 [工程师如何在工作中提升自己？](https://mp.weixin.qq.com/s/DwDzOcQZIK9vd6FQTyuIWQ)

美团点评技术团队刘丁对工程师发展的一些思考和总结，写的很全面。文章第一部分阐述了一些学习的原则；二部分分析了作者在工作中碰到和看到的一些典型困惑；第三部分剖析架构师的能力模型，让大家对目标所需能力有一个比较清晰的认知。

### 🐎 [如何快速成长为技术大牛](https://mp.weixin.qq.com/s/t1P0mw9Hf4y27EiZB2biXw)

技术人员`天天写业务代码还加班，如何才能成为技术大牛？`，文章列出了一些典型的误区及正确做法：**Do more**、**Do better**、**Do exercise**。

### 🐎 [Swift Tip: Local Computed Variables](https://www.objc.io/blog/2018/04/10/local-vars/)

本文介绍了一种通过在函数体内部声明计算属性从而实现局部代码复用的编码方法，不过也仅仅是代码复用，性能方面木有任何提升，类似于一个局部函数，感兴趣的同学可以了解一下。

### 🐕 [读 SnapKit 和 Masonry 自动布局框架源码](https://ming1016.github.io/2018/04/07/read-snapkit-and-masonry-source-code/)

介绍了主流 AutoLayout 布局框架 SnapKit 和 Masonry 源码结构。SnapKit 的设计思路很好理解，也有值得学习的设计经验。如果自己先尝试读读源码再看这篇文章会比较好理解。

### 🐢 [11 Tips for Working on the iPad](https://www.macstories.net/ios/11-tips-for-working-on-the-ipad/)

MacStories 整理了 11 条指南和小窍门，帮你提高 iPad 在 iOS 11 下的生产力。从外接键盘推荐和快捷键到手势和 Siri，全都是 Federico Viticci 日常使用 iPad Pro 的小技巧。

### 🐕 [iOS 中制作原型动画的一些方式](https://medium.com/s23nyc-tech/prototyping-animations-in-swift-97a9cfb1f41b)

介绍了两种动画原型的制作方式。利用 Xcode 的 playground 和 PaintCode。在我看来这两种方式其实都有缺点。playground 编译速度太慢并且调参还是用代码。效果基本靠蒙。PaintCode 适用范围太局限。基本都是绘制路径。现在最强的的原型工具应该是 Principle。

### 🐎 [fastlane 发布 CI aplha 版本](https://github.com/fastlane/ci/releases/tag/1.0.0.alpha.1)

alpha 版本发布了。其实关于公司的自动化也是老生常谈的问题了。
体验比较好的自动化配置在我看来是，Slack + Xcode server + Fastlane + Phabricator + Arcanist + Trello(jira)。有兴趣的同学可以研究一下。

## 工具

### [IBM Watson Services for Core ML](https://developer.apple.com/ibm/)

[Watson Services](https://www.ibm.com/watson/products-services/) 是 IBM 的人工智能实验室提供对外的 AI 服务，包含了聊天对话/视觉识别/语音处理/语言翻译等多方面能力，而 IBM Watson Services for Core ML 是 IBM 与苹果合作的，将 Watson Services 的 AI 能力与苹果的 CoreML 相结合移动端 AI 服务，以 SDK 的形式接入移动端，方便开发者快速构建具有 AI 能力的 App。

### [苹果产品购买时机建议](https://buyersguide.macrumors.com/)

苹果更新其产品的时候往往是该产品的最佳购买时机，如果错过了，那么可以在这个网站上找到购买建议，网站会根据该产品距离上次更新的时长，以及历史以来的平均更新周期给出指导，并收集了产品相关的最新传闻给与你作为参考。

## 内推

### [奇志信息科技: 杭州/广州 iOS 工程师](https://www.lagou.com/jobs/3689131.html?source=pl&i=pl-4)

我（[@没故事的卓同学](https://weibo.com/1926303682/profile)）现在的公司，Swift 开发，应用支持从 iOS 10 开始，杭州和广州都有研发团队，无人机应用方向。iOS、Android、前端、UI 都招，感兴趣的朋友欢迎简历投到 hr@kiwiinc.net 。

### [上海享物说网络科技有限公司：上海 iOS 工程师](https://www.lagou.com/jobs/4260410.html?source=pl&i=pl-0)

我 ([@EyreFree](https://weibo.com/eyrefree777)) 现在所在的公司，位于上海宜山路地铁站附近，主营内容为二手互送社区，Swift 开发，应用支持从 iOS 9 开始。除 iOS 职位以外，还有 Web 前端 / Android 工程师等岗位空缺，求三年左右经验的大佬，三餐供应，住宿补贴。感兴趣的朋友欢迎简历投到 eyrefree@eyrefree.org。

## 关注我们

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

![](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)，[@叶孤城](https://weibo.com/u/1438670852)，[@aaaron7](https://weibo.com/aaaron7)

## 说明

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

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


