# 老司机 iOS 周报 #73 | 2019-07-01

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/ios-weekly.png?raw=true)
老司机 iOS 周报，只为你呈现有价值的信息。

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

## 福利

### 🌟 [免费领取小专栏 -- WWDC2019 内参](https://xiaozhuanlan.com/wwdc19/present/380ad33db882a12ae9c0b2402d386ef10ecafa51)

WWDC2019 内参现已更新到 42 篇，以下是上周更新的文章，欢迎大家订阅学习~

#### 必看

* [如何在 iOS 13 上适配深色模式？](https://xiaozhuanlan.com/topic/1064789253)
* [网络的发展](https://xiaozhuanlan.com/topic/3267194058)
* [在 Xcode 中使用 Swift Package](https://xiaozhuanlan.com/topic/9635421780)
* [优化 App 启动](https://xiaozhuanlan.com/topic/4690823715)

#### SwiftUI

* [Swift Combine 应用](https://xiaozhuanlan.com/topic/9683417052)

#### 推荐

* [Foundation 框架的新亮点](https://xiaozhuanlan.com/topic/5894162073)
* [Modernizing Your UI for iOS13](https://xiaozhuanlan.com/topic/5671830492)
* [UICollectionView 全新布局框架：UICollectionViewCompositionalLayout](https://xiaozhuanlan.com/topic/0735916284)

可直接点击标题链接，或者复制 https://xiaozhuanlan.com/wwdc19/present/380ad33db882a12ae9c0b2402d386ef10ecafa51 至浏览器打开领取。

### [Design+Code 的 SwiftUI 教程限时优惠](https://h5.youzan.com/v2/goods/3eua57deaxury?dc_ps=2286991227876280320.200001&redirect_count=1)

![](https://images.xiaozhuanlan.com/photo/2019/d585de14b83c09b02dfc77251164fe52.png)

**扫码购买在五折基础上输入 iOSWeekly 优惠码再优惠 20 元，限时购买！！！**

## 新闻

### [2019 年 Swift 和 Objective-C 开发者调查报告（JetBrains版）](https://mp.weixin.qq.com/s/0YBb9RKtvhJKLi5E9-8Cng)

[@xiaofei86](https://weibo.com/xuyafei86)：最近知名 IDE 厂商 JetBrains 发布了 2019 年开发者调查报告。本文汇总了与
Swift 和 Objective-C 相关的 11 项调查数据和结果。数据显示，仅使用 Swift 的开发者占比已经过半，仅使用 Objective-C 的开发占比已经仅剩 15%。

## 文章

### 🐕 [0.3s 完成渲染！UC 信息流正文“闪开”优化实践](https://www.infoq.cn/article/9UKos4Xh_6wL4Fh1FOGL)

[@aaaron7](https://weibo.com/aaaron7)：目前，App 通过集成 webview 的方式来将一部分信息展示的任务交给 h5 来实现已经成为行业相对通用与标准的做法。但这样的场景不可避免的会遇到打开速度的问题，相比直接 push 一个 native 的 view，打开一个基于 webview 的页面往往会重很多，比如 webview/jsengine 的初始化，h5 文件的解析与渲染，js 的执行，ajax 的数据拉取，冗长的流程造成的结果就是打开 webview 的页面往往很慢，而且用户会看到白屏。

本篇文章的作者从整个链路的分析出发，提出了一整套优化的技术，比如离线宝、native 渲染、数据预请求等等，并且从截图上看实现了直出的效果。有相关类似优化场景需求的同学可以好好研究下。

### 🐎 [揭秘苹果应用审核内幕](https://mp.weixin.qq.com/s/BCMyEWvMzuGcGhbkZao7uA)

[@老峰](https://github.com/GesanTung)：苹果应用审核过程一直以来是个黑盒，我们经常会遇到让人抓狂却无可奈何的被拒邮件，那么审核到底是怎样的过程呢？

本文根据最近发表在 CNBC 的[一篇文章](https://www.cnbc.com/2019/06/21/how-apples-app-review-process-for-the-app-store-works.html)揭秘了 Apple 应用审核执行审核委员会组成结构及工作内容、应用审核过程、应用拒审处理细节等等，对审核过程好奇的读者可以看一下。

参考链接：
- [Inside Apple’s team that greenlights iPhone apps for the App Store](https://www.cnbc.com/2019/06/21/how-apples-app-review-process-for-the-app-store-works.html)


### 🐎 [App Store 审核极限操作（2019.6 最新）](https://xiaozhuanlan.com/topic/3571480296?from=timeline)

[@极速男孩007](https://github.com/ztlyyznf001)：本篇文章主要介绍了苹果审核中遇到的一些问题，然后提供了一些针对性的解决方案。并且推荐了一些关于审核的文章做参考。

参考链接：
- [Inside Apple’s team that greenlights iPhone apps for the App Store](https://www.cnbc.com/2019/06/21/how-apples-app-review-process-for-the-app-store-works.html)

### 🐕 [系列文章深度解读|SwiftUI 背后那些事儿 ](https://mp.weixin.qq.com/s/ciiauLB__o-cXXfKn7lL1Q)

[@zvving](https://github.com/zvving)：继上篇[新晋网红SwiftUI——淘宝带你初体验](https://mp.weixin.qq.com/s/x_jFcKeXSbtdK0CnfayFsw)后，淘宝技术团队又带来 SwiftUI 更详细的介绍。

本文汇总阐述了 WWDC19 中大量关于 SwiftUI 的内容：从 DSL 所需要的新语法，到 API 设计指南，从 DataFlow 到布局算法，从混合布局到多设备适配……

文章涉及技术细节点到为止，而又对 SwiftUI 知识轮廓面面俱到。如果你还没接触过 SwiftUI，想花二十分钟对其知识图谱有个整体认知，这篇文章会是最好的入门指南。


### 🐕 [GMTC2019 演讲实录|闲鱼基于 Flutter 的架构演进与创新](https://mp.weixin.qq.com/s/-IN1D99TqpjKZRQTAbaOrQ)

[@Parsifal](https://weibo.com/parsifalchang)：GMTC2019 已于上周圆满结束。闲鱼作为国内率先大规模尝试 Flutter 的团队，也在这次 GMTC 上做了关于闲鱼是如何使用 Flutter 做混合式开发以及业务落地上的分享。Flutter 作为一个跨端解决方案，与原生混编的问题是其必然会遇到而且接受考验的。本次演讲，闲鱼团队围绕着以下两个问题，分享了闲鱼团队是如何演进和创新 Flutter 架构的。

- 如果在一个已经存在的 App 中加入 Flutter，如何让 Native 与 Flutter 进行无缝的衔接，同时保证相互开发之间的隔离性
- 如果在 Flutter 的容器中，使用已有的 Native UI 组件，在 Flutter 与 Native 渲染机制不同的情况下，怎么保证两者的无缝衔接以及高性能。

### 🐎 [监控所有的 OC 方法耗时](https://juejin.im/post/5d146490f265da1bc37f2065?utm_source=gold_browser_extension)

[含笑饮砒霜](https://weibo.com/chinafishnews/)：App 卡顿，绝大部分都是因为主线程卡顿造成，所以可以通过监控主线程运行的 OC 方法来优化代码质量和性能问题。

[@Damonwong](https://github.com/Damonvvong): 作者在学习完[《戴铭的iOS开发高手课》](https://time.geekbang.org/column/intro/161?code=0eTznNzpAbVisw%2FesJ9iM32u2ctcY8OqwgMuqSlv5OE%3D&utm_term=SPoster) 之后，了解到了如何 hook objc_msgSend 写了一个如何监控所有 OC 方法耗时的小工具。并详细说明了代码实现的原理，是一个值得学习的文章。

然而，hook objc_msgSend 涉及到汇编的知识，如果对汇编不太熟悉的朋友，可以看一下作者的另外一篇文章 [arm64程序调用规则](https://wukaikai.tech/2019/05/19/arm64%E7%A8%8B%E5%BA%8F%E8%B0%83%E7%94%A8%E8%A7%84%E5%88%99/#%E5%87%BD%E6%95%B0%E8%BF%94%E5%9B%9E%E7%BB%93%E6%9E%9C)

### 🐎 [BlockHook with Private Data](http://yulingtianxia.com/blog/2019/06/19/BlockHook-with-Private-Data/)

[@Parsifal](https://weibo.com/parsifalchang)：Block 作为 Objective-C 上的闭包实现，为我们编写回调代码带来了极大的便利。享受这样的便利之余，我们也会有场景想 Hook 某些 Block 来做一下特定的业务，但事实上 Block 的 hook 并不像 Method Swizzling 那么简单。而杨萧玉的 [BlockHook](https://github.com/yulingtianxia/BlockHook) 就解决了这样的问题。

本文从介绍 BlockHook 是如何解决带有“私货”而不能被正常 Hook 的 Block 的问题出发，揭秘了这些特殊 Block 是如何被实现的。由于此类文章资源很少，对于我们想深入了解 Block 同学十分值得细读。文章很短，但干货很足。 

### 🐎 [[译]我第一次体验Kotlin Native](https://juejin.im/post/5d1716556fb9a07ef5624af8?utm_source=gold_browser_extension)

[@邦Ben](https://weibo.com/linwenbang)：Kotlin 1.3 的发布，带来了跨平台的能力（仿佛不会跨平台的都不是好语言），Kotlin 可以生成多个平台的代码（iOS，MacOS，Android，Windows，Linux，WebAssembly），本文中经过编译器处理后会生成对应平台的代码，部分平台能力还需要手动进行桥接（跨平台迈不过的坎）。初看，Kotlin 跨平台能力还未完备，还需一段发力期，还是让我们拭目以待吧。

### 🐕 [How I negotiated a $300,000 job offer in Silicon Valley](https://blog.usejournal.com/how-i-negotiated-a-software-engineer-offer-in-silicon-valley-f11590f5c656)

[@老驴](https://www.weibo.com/6090610445/)：这篇文章其实对国内的程序员参考价值不大。文章讲的是一个美国程序员在跳槽过程中如何利用自己有的多个不错 offer 来进行相互竞价的过程。因为国内的面试情况和北美的不太一样，所以也不能拿来套用，仅供参考吧。

顺便，如果你对北美软件工程师面试相关信息感兴趣的话，也可以看看之前我写的一篇[文章](https://xiaozhuanlan.com/topic/4263189057)。

### 🐢 [WWDC session videos recap](https://github.com/Blackjacx/WWDC)

[@红纸](https://github.com/nianran)：今年 WWDC 有超过 100+ 的视频总量，我们很难跟进每个视频的内容，但是本文作者为我们罗列了一个视频摘要清单。我们可以通过摘要，快速把握住此 Session 的重要内容。当然我们也可以通过摘要来辨别视频内容的价值，是否值得我们继续细化深入细节。

### 🐕 [Dart | 什么是Mixin](https://juejin.im/post/5bb204d3e51d450e4f38e2f6)

[@CrazyCoderShi](https://github.com/CrazyCoderShi)：Dart 是一门取众长的编程语言，语法简介明了，Mixin 更是其相当亮眼的设计，很多人把他理解为 Java 之于 interface ，Swift 之于 extension，小编觉得这么理解都可以，但是 Mixin 更强大，[本文](https://juejin.im/post/5bb204d3e51d450e4f38e2f6)详细的带你了解 Dart 的 Mixin 究竟为何物。

## 代码

### [About-SwiftUI](https://github.com/Juanpe/About-SwiftUI)
[@水水]：自从苹果公司宣布了 SwiftUI 的主题演讲之后，大量的文档、示例、视频和教程就出现了。此存储库的目标是收集所有这些信息，让你方便的查找有关 SwiftUI 的信息。

## 设计

### [选一个好的背景让你的设计更出彩！](https://mp.weixin.qq.com/s/5Q3Xb_IG3O2Lus05aY7zSQ)

[@邦Ben](https://weibo.com/linwenbang)：如果你有兴趣或者正在做独立 App 的话，你一定会绕不开设计，因为不是所有人都那么幸运有一个专属的设计师搭档，该文章介绍了一些可以获取到好背景的一些资源网站，有兴趣的可以看下~


## 内推

### 字节跳动 2020 届提前批内推

**字节跳动**面向 2020 届毕业生的【秋招提前批】限时开启，**iOS/Android 客户端、前端，后端、测试开发等**岗位均开放名额，直走**内推通道**，提前拿 offer。

- 简历发送至：[zengming.0@bytedance.com](mailto:zengming.0@bytedance.com) （推荐标题：校招提前批-岗位-姓名-城市），如：校招提前批-iOS客户端-王富贵-北京
- **不影响**后续秋招再次投递，欢迎转发～
- 有效时间截止 2019.07.17

PS：王富贵表示：这是个很好的机会哟，走过路过不要错过 (～o￣3￣)～

### 常规内推

老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。

如果你想**找工作**，点这里：https://www.yuque.com/iosalliance/article/bhutav

如果你想**招人**，点这里：https://www.yuque.com/iosalliance/article/ycyhf3

当然，也欢迎你关注我们每一期的周报，我们会在每期周报底部及时更新编辑内推岗位。

## 关注我们

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

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

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

## 说明

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

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


