# 老司机 iOS 周报 #40 | 2018-10-22

![ios-weekly](../assets/ios-weekly.png)
老司机 iOS 周报，只为你呈现有价值的信息。

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

## 新闻

### [New LSP language service supporting Swift and C-family languages for any editor and platform](https://forums.swift.org/t/new-lsp-language-service-supporting-swift-and-c-family-languages-for-any-editor-and-platform/17024)

这应该是过去一周 Swift 社区最大的新闻，Apple 将主导一个新的开源项目，来为其在 Xcode 生态中的 Swift 和 C family 的语言添加 LSP 的支持，这意味着之后在 VS Code 上写 Swift 也能享受自动完成，定义跳转等功能。目前来看，Swift 已经成为全域通用型程序设计语言，但目前对于非 Apple 生态下的 Swift 开发的工具体验并不友好，Apple 此举无疑对于 Swift 社区是重大福音。

### [Photoshop for iPad hands-on: an exclusive look](https://www.theverge.com/2018/10/15/17969754/adobe-photoshop-apple-ipad-creative-cloud)

Adobe 在近期的 Max 大会上发布了 Photoshop iPad 版本的预览版，正式版将在 2019 年发布。The verge 进行了评测，结合月底苹果的发布会，随着全面屏 iPad Pro 的更新，可能会有一系列生产力 app 随之发布。


## 文章

### 🐕 [SwiftOldDriver 精选： Diff 算法在 iOS 中的应用(一)](https://xiaozhuanlan.com/topic/6921308745)

文章来自 [SwiftOldDriver 精选](https://xiaozhuanlan.com/olddriver-selection)，将是一个系列，本文是开篇：讲 Diff 算法的一些基本概念。
> 在计算机领域中，Diff 是一个很重要的概念，被广泛的运用于各式各样的场景。比如说，React 利用 Diff 优化 Dom 刷新导致的性能问题；Git 借助 Diff 算法实现了版本之间的差异化对比；腾讯 Tinker 热修复借助 Diff 算法生成 patch 包等。

### 🐎 [Xcode 10 Library Tips](https://useyourloaf.com/blog/xcode-10-library-tips/)

相信不少人已经更新到了 Xcode 10。Xcode 10 的 UI 控件窗口从右下角挪到了右上角。默认的使用逻辑是点开后，拖拽一个控件到界面上控件窗口会自动消失。如果一个页面需要连续拖几个控件就会很痛苦。所以分享一个重要的 tip：**按住 option 建点击弹出控件窗口的按钮，窗口就会常驻**。

### 🐎 [拍照聚焦和曝光，AVFoundation 简明教程](https://juejin.im/post/5bc2123ee51d450e6c75157d)

这是利用 `AVFoundation` 实现拍照、聚焦和曝光等功能后的一篇总结文章，包含代码和示例，对有这方面应用需求的朋友可以花点时间看看。

### 🐕 [Unleashing the power of asset catalogs and bundles on iOS](https://rambo.codes/ios/2018/10/03/unleashing-the-power-of-asset-catalogs-and-bundles-on-ios.html)

对于 iOS 开发者来说，`Bundles` 和 `Asset catalogs` 应该是再熟悉不过了。文章介绍了一些高级用法，特别是利用 Asset Catalogs 存储一些配置文件，可以给不同的设备配置不同的值，打开了另一个世界。文末还结合 `Bundles` 和 `Asset catalogs` 介绍了一个实际 App 中的使用场景。

### 🐕 [Tricky UIViewController transition animations](https://medium.com/rosberryapps/tricky-uiviewcontroller-transition-animations-59131b540b33)

目前有很多为初学者准备的简单过渡动画教程，但鲜有为高级开发者准备的。在这篇文章里，作者图文并茂地分享了他最近实现的几个复杂过渡动画，以及几个他在实现过渡动画时的小技巧。

### 🐕 [揭秘Flutter Hot Reload（原理篇）](https://juejin.im/post/5bc80ef7f265da0a857aa924)

本文介绍了 Flutter 的`热重载（HotReload）`的实现原理，如果有兴趣自行实现`热重载（HotReload）`特性的同学可以关注一下。
* Flutter 热重载的关键代码位于`/flutter/packages/flutter_tools/lib/src/run_hot.dart`
* 在需要重新加载时，扫描有修改的文件，通知 UI 线程重绘 View 树
* 在 Flutter 中，因为 Dart 代码是工作在自己的 VM 下，所以 UI 层的 reload 是通过服务注册的方式来跟外界进行打交道的

### 🐕 [Time​Interval, Date, and Date​Interval](https://nshipster.com/timeinterval-date-dateinterval/)

作者讲述了 Time​Interval、 Date、 Date​Interval 的历史由来。使用这些 API 的同时了解这些有趣的历史，不失为一个愉快的过程。

## 代码

### [Panda - 基于 Swift 的 Autolayout 实现](https://github.com/nangege/Panda)

使用 Swift 重新实现 Cassowary 算法、不依赖 UIView 的 Autolayout 机制，使得 Layout 和渲染都可以在后台进行。抛去多线程的影响，算法本身的效率也是略高于 Apple 的实现，即使不用的话，也可以通过源码了解 Autolayout 内部的运作原理。

## 内推

- [北京-百度网盘 持续招 iOS 开发](https://talent.baidu.com/external/baidu/index.html#/jobDetail/2/102507)：社招、应届、实习均可。项目在技术上很有挑战性，团队技术氛围极好。诚心希望各路大神前来切磋，也欢迎计算机基础好的小白来共同学习。简历发邮箱 xuyafei01@baidu.com，暂不考虑的也欢迎微博私信 [@小非86](https://weibo.com/xuyafei86) 聊聊~

- [北京-蚂蚁金服 招iOS/安卓/前端开发](https://job.alibaba.com/zhaopin/position_detail.htm?trace=qrcode_share&positionCode=GP031268&from=timeline&isappinstalled=0)：负责支付宝会员及帐号业务线，地点北京国贸，金台夕照地铁站出口 100 米。有兴趣的同学欢迎将简历发送到：weijing.wdf@alibaba-inc.com / weijing.wdf@antfin.com （同一个邮箱）或者微博私信 [@折腾范儿_味精](https://weibo.com/agvicking) 了解情况。

- 上海即刻：如果你认识聪明勤奋、胆大心细、有追求的工程师，那就来加入我们吧！任何推荐或简历可直接发给 Jason（即刻 iOS leader）: jasy@okjike.com，或微博 [@JasonYuh](https://weibo.com/jasonyuh)。

- [杭州奇志科技招聘 iOS、前端](https://www.lagou.com/gongsi/34872.html)：奇志科技自 2016 年起通过行业无人机协同工作流 Mesh 进入物联网与人工智能领域， 并成功为房地产、建筑、测绘、电力巡检等行业提供无人机解决方案。感兴趣可以微博上私信 [@没故事的卓同学](https://weibo.com/u/1926303682) 了解。

- [深圳头条研发中心诚招各路 iOS 好手一起做取悦自己的项目](https://job.toutiao.com/2018/spring_referral/?token=alPR8WCv8nnnc5QqtsyKjw%3D%3D&key=MTY1MDMsMTg0MTQsMjA1MjAsMTk1NjEsMTU2ODksMTc0ODk%3D)：如想了解更多深圳头条的信息，可以加小T微信：tomtan，切磋技术和聊情怀都可以喔~~~~

- [北京字节跳动 iOS 团队持续招人中](https://job.toutiao.com/society)：简历可以发送到邮箱 raozhizhen@gmail.com，或者添加我（[@AidenRao](https://weibo.com/AidenRao)）的微信 jingmu1994 了解更多公司及岗位信息。

- [北京百度教育事业部招 iOS 开发](https://www.baidu.com/s?wd=百度)：百度教育事业部，地点：北京西二旗。部门下面有百度阅读，百度文库，百度爱听等 App 产品。团队技术氛围浓厚，有兴趣的同学欢迎将简历发送到我的邮箱：lizelei@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)，[@享耳先森](https://github.com/iblacksun)，[@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)，[kyo](https://github.com/KyoLi)，[tom510230](https://xiaozhuanlan.com/u/6682065345)，[anotheren](https://anotheren.com)，[水水](https://www.xuyanlan.com)，[looping](https://github.com/looping)，[@JasonYuh](https://weibo.com/jasonyuh)，[@老老老老老老老驴](https://weibo.com/u/6090610445)，[@小非86](https://weibo.com/xuyafei86)

## 说明

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

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