老司机 iOS 周报 #55 | 2019-02-18

4,683 阅读10分钟

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

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

新闻

TLS 1.3 in iOS

在 iOS 12.2 中,iOS 系统默认开启了对 TLS 1.3 的支持,使用 Network Framework 以及 NSURLSession 的开发者都可以使用 TLS 1.3 来建立更安全的网络连接了。

在这方面有兴趣的童鞋不妨了解一下。

iOS 12.2. beta PWA update

在 iOS 12.2 beta 上 PWA 的能力也得到了小部分更新,由PWA打开外部网站会通过 SFSafariViewController 打开,进入后台后 PWA 当前的状态会保持,PWA 应用可以被系统搜索到等

文章

🌟 🐢 了解和分析 iOS Crash Report

作为客户端的开发者,与各式各样的 Crash 打交道是家常便饭。关于 App Crash 的相关讨论,社区也总是比较活跃。我们曾在 27 期和 34 期分别推荐了 深入理解 iOS Crash Log手把手教你查看和分析 iOS 的 crash 崩溃异常 两篇好文章。而这次则是来自苹果官方文档的译文,官方则意味着权威,以及更多的细节。内容虽然还是围绕着 “符号化 - 看懂 - 解析” 三个部分进行,但非常系统和详细。作者也对这篇译文进行多次润色修改,并在文中多处添加了自己的注解,会对我们阅读这类偏底层文章有所助益。

文中会涉及许多底层概念,读起来难免不如一些应用类文章顺畅,但小编还是建议大家无论如何都坚持至少过一遍,并再安排时间分块细读,会大有裨益。

🌟 🐕 iOS 原生级别后台下载详解

本文记录了作者实现支持原生后台下载 Tiercel 库的整个历程,并详细的列出后台下载的所有特性和注意事项,并附上了具体实现。让读者能够更深刻的了解到后台下载。目前 Tiercel 2 已经发布,完美地支持后台下载,还加入了文件校验等功能,对后台下载有兴趣的朋友可以借此机会深入了解下。

🐕 ABI Stability and More

Swift.org 二月初发文介绍了 Swift ABI Stability 当前状态及后续计划。Swift 5 在 macOS, iOS, watchOS, and tvOS 几个平台将实现 ABI Stability,预计很快就能发布,Linux 及 Windows 平台还需评估。文章还介绍了 Module StabilityLibrary Evolution 的后续计划 。

ABI Stability 能带给我们什么:上述系统以后将自带 Swift runtime and standard library,而不需嵌入到 App 中,能大大减小 Swift App 的打包大小。

🐎 浅谈团队管理最佳实践

作者从以下几点谈了一下团队管理的实践:

  • 每个人都需要关怀:领导者应确认团队中每个成员的职业发展规划,并适时地给予“人文上的关怀”
  • 公平公正公开的价值评判标准:一个成员的价值增值包含两个层面:随着熟练度的提升所带来的价值增值和解决特殊领域问题的经验价值
  • 团队沉淀:可以通过文档和流程标准化的方式有效降低做重复性工作的成员的替备成本
  • 具象化团队这台机器的样貌:领导者定义团队的责任与目标、架构设计、合理组成、团队的演进等,方便成员参考辅助自己的实践

🐕 制作一个 Mac APP:XcodeExtension

Xcode 8 提供了 Xcode Source Editor Extension方式来开发 Xcode 插件。本文以 XcodeExtension 为例,介绍了该插件的使用方法与制作思路。

XcodeExtension 主要有以下功能:

  • ConvertFromCase 把选择的下划线内容变为驼峰
  • DeleteEmptyLines 删除选中的空行
  • SortLines 排列选中的行
  • JsonToModel 把Json数据转成Swift模型,会把下划线命名变为驼峰

在往期周报中我们也有过相关推荐如: How to convert your Xcode plugins to Xcode extensions 以及 Code Friend 开源工具等,感兴趣的读者可以拓展阅读。

🐎 使用 OCLint 自定义 MVVM 规则

本文总结了通过自定义 OCLint 的扫描规则,对 MVVM 开发模式的 ViewModel 运行静态检查,并把规则集成到 Xcode 上所踩的一些坑。由于官方 OCLint 很久没有维护了,所以本文作者就基于 LLVM 7 进行了修改,对这块有需要或感兴趣的同学可以直接安装试用。

🐕 如何看待软件开发?

当年移动互联网大潮来的时候,软件开发再次成为炙手可热的岗位,高工资吸引了很多人投身其中。当大潮退去,互联网也迎来寒冬的时候,对于已经在其中的各位,又或者未来想要当开发者的同学们,软件开发到底是什么样的,究竟需要掌握多少知识,职业规划应该如何做,会成为大家再次思考的问题。本文作者以自己多年的工作经验,总结了如何看待软件开发这一问题,值得如果尚有迷茫的同学看一看。

🐕 Objective-C 单向数据流方案

在 JS 领域,得益于 JS 弱类型语言的特性,单向数据流被广泛的使用。单向数据流可以避免许多因为线程等造成的各种问题。本文介绍了 OC 下的一个单向数据流的方案 Reflow 库。Reflow 库架构设计实现了单向数据流的几个特征:

  • model 对象不可变
  • 整个 app 的数据存于 store 层
  • 更新和通知也收拢于 store 层

Reflow 是开源的,有兴趣的同学可以一看。

🐕 移动开发的罗曼蒂克消亡史

本文是 InfoQ 总编辑徐川的一篇文章,介绍了移动开发领域的插件化和热更新两个方向的发展史,覆盖了 iOS 和 Android 。徐老师文章结尾的一句话很有意思,『插件化热潮注定成为技术发展的一段小插曲,也许再过几年,不会有人记得了。那段激情飞扬的岁月,终将成为 The Wasted Times。』

最近跟 Bang 哥吃饭,也聊起了热修复的一些事情,实际上在大厂一直都还有发展各种移动开发领域的黑科技。包括最近大热的 Flutter 技术,在 Google 的 RoadMap 上面,也明确表示了动态更新会是一个重点考虑的方向。总的来说,2019年,移动开发的插件化和热更新方向,应该会在基于各种虚拟机技术的基础上,继续往前发展,满足业务需求。

工具

ios-developer-tools

本文中总结了 iOS 开发者应该了解的工具合集。其涉猎了多个方面的工具推荐,例如 DEBUG 调试、项目分析、持续集成、逆向工程等。在这份列表当中,能够找到耳熟能详的项目,也有大家平时没有涉及到的方面,不妨来看看那些你没有接触过的开发工具。

DoraemonKit

滴滴开源的一款功能齐全的客户端研发助手,同时支持 iOS 和 Android 两端,类似的前辈有 FLEX、Dotzu,但仅限于 iOS 平台。

  • 内置了很多常用的工具,包括一些辅助开发工具、测试效率工具、视觉辅助工具等
  • 接入方便,便于扩展,让你的业务测试代码在这里快速接入,统一管理,统一收口

代码

Path.swift

一个文件系统路径库,专注于开发人员体验和强大的最终结果。保证了安全性和正确性的前提下提供了非常简洁的 API ,为管理文件路径而头疼的开发朋友们可以尝试使用这个开源库哦!

Facebook 开源图像处理库 Spectrum,优化移动端图像生成

Facebook 开源了其图像处理库 Spectrum,内核使用 C++ 编写,并提供了 Objctive-C 及 Java 的简单封装,简化移动端开发。统一的核心使得在 iOS 和 Android 上的图像输出更加统一。

效果丰富的分类切换组件:JXSegmentedView (Swift版)

SegmentedControl + PaggingView 组合实现的分类切换视图是资讯、电商类应用常用的基本组件。具体实现起来,动效细节和特殊交互场景要考虑的问题并不少。 JXSegmentedView 胜在实现了大量主流应用分类切换组件的交互效果,如果你碰到对应需求,相信这会是个不错的参考。

如果你不幸还停留在 Objc,也可以看看同一作者实现的 Objc 版本 JXCategoryView(已有 2k+ stars)。

暴走的鑫鑫 自荐

🌟 The Architecture of Open Source Applications

这是一本开源的电子书,主要介绍了最近几十年来一些经典开源项目(包括 Git、LLVM、nginx、PyPy 等知名项目)的架构思想和设计哲学,文章作者都是业界大牛甚至是项目作者本人,比如 LLVM 之父 Chris Lattner。相比自己去阅读源代码百思不得其解,原作者自己分享的思考和感受就像指明灯一样,给我们打开了更大的世界,站在巨人的肩膀上才能看得更高更远。

@ShannonChenCHN 推荐。

内推

关注我们

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

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

本期编辑

@四娘@享耳先森@Damonwong@折腾范儿_味精@张嘉夫@Parsifal@aaaron7@kyo@tom510230@anotheren@水水@looping@老老老老老老老驴@小非86@邦ben@红纸@含笑饮砒霜@JimQ@老峰@zvving@J_Knight_

说明

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

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