老司机 iOS 周报 #101 | 2020-02-17

3,567 阅读6分钟

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

你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。

新闻

🐎 On the road to Swift 6

@xiaofei86:Swift 官方发布 Swift 6 未来方向:

  1. 加速 Swift 生态发展
  2. 优化开发体验(Compiler,Debugger,IDE 等工具)
  3. 朝着为开发者赋能的语言前进(语言功能层面)

为此,将沿用 SSWG 的方式,在各个领域设立各自的工作组进行开发,并且 Core Team 也将进行人员调整,引入各个工作组的核心负责人。

Swift 6 目前有两个目标:

  1. 加强并发的功能支持
  2. 继续沿着 Ownership Manifesto 的计划推进,优化内存模型

这一次 Swift 6 不会有具体的时间安排,只会按照功能去公开各自的开发进度和时间表,当这些目标全都完成时就会 release Swift 6,在目标完成之前都只会按照周期 release Swift 5.x 版本。

新手推荐

🐕 SwiftUI-官方教程翻译

@zvving:SwiftUI 已经公布半年了,开始逐渐有大批开发者尝试学习和使用。此项目翻译了共十篇官方的 SwiftUI 教程,在保留官方的文字内容、配图、代码外,还进行了细微的优化,推荐 Swift 新手参考。

推荐人:@Willie

文章

🌟 🐕 一次让刷新控件好玩起来的尝试

@zvving:相信你也有过『手里拿着锤子,看什么都像钉子』的经历。

从学会 SpriteKit 能用在哪里?到下拉刷新游戏化『一本正经』的可行性分析,再到具体的代码实现。作者在创造需求的同时,提供了『严谨思考,细心实现』的样本。

看完本文,会让人手痒,也想学些新技术,再找个场景用起来。

🐕 Library Evolution in Swift

@老驴:Swift 编译器组的 Slava Pestov 在 Swift 官方网站上写了一篇关于 Swift 5.1 中 binary stability 相关的介绍。

在 Swift 5.1 中,Swift 引入了两项新功能:Module stability 和 Library evolution。前者可以让不同版本编译器编译的 Swift Module 同时在一个 App 中运行,而后者,则可让 binary framework 开发者在不影响老版本兼容性的同时添加新功能。

本文中,Slava 用了一些例子来介绍其中两个比较常用的 attribute:@inlinable@frozen。 如果你在开发一些 framework 的话,不妨来读一读这篇文章。

🌟🐕 淘系专家带你初探端智能与MNN

上篇

下篇

@莲叔:MNN 的文章之前也陆续推荐过一些,不过比较偏技术细节。本次推荐的两篇相对来说更加 general 一些。从为什么要做端智能聊到为什么要用MNN。上篇侧重于讲解了为什么端上 AI 是未来的发展方向,同时对于端智能面临的挑战和未来的发展趋势做了一些总结。下篇则主要分享了 MNN 的优势以及工作流程。两篇文章适合对于端智能持观望态度的研发同学参考,对于已经入坑的,参考价值不大。

🌟🐢 Static and Dynamic Callable Types in Swift

@JimQ:上周 Xcode 11.4 第一个 beta 版给我们带来了大量有价值的更新,其中包括 Swift 比较受关注的两个新语法:作为函数的 key path 表达式callAsFunction 。作者通过提供一些历史和理论背景,来帮助我们认识到新语法的真正价值点,以及 Swift 怎么把静态、动态可调用类型的版图一步步拼起来的。对于 Swift 不断并入的新提案导致“含糖量”逐渐增加的问题,作者也发出了“庐山不识真面目,只缘身在此山中”式的无奈之慨。

🐕 WatchKit渲染原理以及SwiftUI桥接

Apple Watch 从发布以来,经过几次更新换代,目前已经成为市面上最受欢迎的可穿戴设备。Swift UI 是去年苹果新推出的 UI 相关框架。虽然 WatchKit 推出已经有一段时间了,但是相信多数同学并没有开发 Watch App 的经历,所以这两个对很多人相对陌生的技术如何结合开发,相信很多人对此会有兴趣。本文不仅介绍了 WatchKit 的渲染原理,还介绍了如何与 SwiftUI 进行桥接,值得好好了解下。

工具

ControlRoom

基于 simctl,让你可以通过 GUI 来便捷地控制模拟器,例如发送推送通知,切换夜间模式等。

Sitrep

Sitrep 是 Swift 的源码分析工具,为你提供代码的高级分析:

  • 你的类,结构体,枚举,协议和扩展的数量。
  • 总代码行数,以及源码行数(减去注释和空格)。
  • 列出最长行数文件,以及它们的源代码行数。
  • 哪些内容被 import 以及 import 的频率。
  • 你的项目中有多少个 UIView,UIViewControllers 和 SwiftUI 视图。

代码

🌟 🐕 MLN —— 支持热更的移动跨平台解决方案

@CrazyCoderShi:MLN 是陌陌技术团队开源的移动跨平台开发框架,因其较低的学习成本、较高的人员效率、良好的性能、支持线上热更新等优势,目前在陌陌 App 中已全面替换 Weex,成为唯一在用的跨平台方案,并广泛应用于多种业务场景. MLN 优点良多:

  • 包体积小,加载速度快,流畅度高(对比 Flutter/RN/Weex )
  • 开发调试支持热重载,提升开发调试体验,节约时间成本
  • 支持热更新,通过网络下载lua离线包即可实现热更新
  • 提升开发效率,一套代码适应 Android 和 iOS 两端

音视频

🌟🚧 iPlayground 2019 | 網路難,難於上青天 - 用部件化的方式簡化網路程式設計

@老峰: 视频是 瞄神 在 iPlayground 2019 的演讲,分享了 Line SDK 关于网络层的单一职责设计架构思路, 有兴趣的同学可以点这里看源码

内推

杭州萧山微医集团招聘资深 iOS 开发工程师(Mac 方向)。微医集团是国内领先的互联网医疗方向独角兽企业,现招聘精通 Mac 端音视频方向研发工程师,参与音视频 SDK 的开发和维护,负责云会议客户端核心功能的设计开发和维护。有意向者发送简历至 zhangmw1@guahao.com,有投必回,实时反馈进度~

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

如果你想找工作,点这里:www.yuque.com/iosalliance…

如果你想招人,点这里:www.yuque.com/iosalliance…

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

关注我们

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

同时也支持了 RSS 订阅:github.com/SwiftOldDri…

说明

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

预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)