# 老司机 iOS 周报 #103 | 2020-03-02

![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) 提出。

## 新闻

### [Flutter 智能闹钟挑战赛评选结果揭晓](https://medium.com/flutter/its-time-the-flutter-clock-contest-results-dcebe2eb3957)
[@zvving](https://github.com/zvving)：Google 联合 Google Assistant、联想，发起的 Flutter 智能闹钟挑战赛已经评选结束，获奖及提名作品均有源码奉上，Flutter 爱好者不容错过。

> 赛事网址：https://flutter.dev/clock 

## 文章

### 🌟 🐢 [Flutter 在字节跳动的现状与工程实践](https://mp.weixin.qq.com/s?__biz=MzUxMzcxMzE5Ng==&mid=2247493836&idx=1&sn=979792491d0abe803c0f00ed412fb0de&chksm=f9525d8fce25d499f5c9815529f7fc25d5e130986a44e430352e375b77d5fe727a8d88f783e1&mpshare=1&scene=1&srcid=&sharer_sharetime=1582811190556&sharer_shareid=b37c346ca5a345410d47741175cc1271&rd2werd=1#wechat_redirect)

[@含笑饮砒霜](https://weibo.com/chinafishnews/)：这是一篇主要分享 Flutter 在字节跳动的现状以及工程实践经验的深度好文。字节跳动希望把 Flutter 打造成下一代研发体系，支撑众多 App 的各种使用场景。文章分为几个部分：

- Flutter 在字节跳动的现状
  - Flutter 的优势与业务现状
  - 建设进展与规划简介
  
- 工程实践
  - FlutterW 研发套件
  - 容器化工程方案
  - ByteRedux 状态管理方案
  
- 总结与展望     

尤其是工程实践部分，FlutterW 研发套件标准化了 Flutter 的开发环境，提供了方案统⼀实施的能⼒。容器化方案让运行环境提供统⼀基础能力，真正实现“Write Once, Run Everywhere”。 ByteRedux 状态管理方案以很低的成本解决了 Redux 的问题，保留了 Redux 的优势，使其可以适应大中小型应用。字节跳动基于 Flutter 技术落地的解决方案以及相关的技术创新，相信会为更多企业和开发者提供启发和借鉴！

### 🐕 [Four Easy Ways to Debug Network Requests in Flutter](https://medium.com/flutter-community/three-easy-ways-to-debug-network-requests-in-flutter-53043e898929)

[@老峰](https://github.com/GesanTung)：这篇文章分享了关于 Flutter 网络请求 Debug 的四种方式：

  - 使用log 日志：使用 logs package 打印日志，可读性较差
  - 使用 Alice：集成在 Flutter App 内部，可视化的展示网路请求记录
  - 使用 Flipper：来自 Facebook 的 桌面 App
  - 使用 Proxy 代理：在网络框架中配置代理 IP，配置 Charles，这个也是作者推荐的方式

### 🐢 [How Swift imports C APIs](https://github.com/apple/swift/blob/master/docs/HowSwiftImportsCAPIs.md)

[@xiaofei86](https://weibo.com/xuyafei86)：当 Swift 从基于 C 的语言（C，Objective-C）导入一个模块或者解析 bridging header 时，这些语言的接口被映射为 Swift 接口以便可以在 Swift 代码中直接使用。这提供了 Swift EFI 功能的基础（Foreign Function Interface 外部函数接口）— 对基于 C 的语言开发的库提供互相操作的能力。

本文为苹果的官方文档，讲述了接口怎样从基于 C 的语言映射到 Swift。文章的受众很广，在必要的时候会解释一些高级概念，除了技术专家，也推荐给 Swift 和 C 语言的初学者。

### 🐕 [Swift.org - Announcing ArgumentParser](https://swift.org/blog/argument-parser/)

[@AidenRao](https://weibo.com/AidenRao)：Swift 发布 ArgumentParser，一个命令行解析库。可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数，然后 ArgumentParser 将对命令行进行解析，支持子命令，自定义帮助和参数验证提示。

## 工具

### [zld](https://github.com/michaeleisel/zld)

[@四娘](https://kemchej.github.io/)：一个更快的 linker。在大型项目里增量编译 link 阶段的耗时占用非常大，这个项目在 Apple 版本的基础上改为使用更加高效的 Hash 实现，增加任务的并行处理，Benchmark 显示 link 时间比原本缩短了 40% 左右。

> 推荐人：[SketchK](https://github.com/SketchK)

## 代码

### 🌟 [DarkModeKit](https://github.com/microsoft/DarkModeKit)

[@Damonwong](https://github.com/Damonvvong): Microsoft 作为老牌的软件公司，开发了不少优秀的 iOS App，比如 Office 套件。年前的时候 Office 有了一次比较大的更新，同时也支持了 DarkMode。令人兴奋的是，Office 套件中使用的 DarkModeKit 已经开源了。感兴趣的可以了解一下

本人也学习和了解了一下 DarkModeKit 的源码，不得不说 DarkModeKit 的代码质量也非常高，非常值得学习。

### [KeyboardGuide](https://github.com/niw/KeyboardGuide)

[@EyreFree](https://github.com/eyrefree)：众所周知的是，iOS 开发中如何优雅地处理键盘是一件比较有挑战性的事情。我们可以通过搜索引擎找到很多方案，但大多数都不是很完善。KeyboardGuide 将各种需要考虑的状况都包含在内，并且对 iPad 也提供了良好的支持，有需求的同学可以尝试一用。

## 音视频

### [Vue.js - The Documentary，Vue.js 纪录片，配中文字幕](https://www.bilibili.com/video/av92525472/)

[@享耳先森](https://github.com/iblacksun)：纪录片总长 30 分钟，记录 Vue 的发展过程。
尤雨溪在片中讲了 Vue 名字由来，介绍了关键时间节点的发展过程，也和 `Angular` `React` 做了些对比。

## 内推

老司机周报团队联合知识小集和 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）


