老司机 iOS 周报 #86 | 2019-10-14
老司机 iOS 周报,只为你呈现有价值的信息。
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新闻
Twitter 重新上架 macOS 客户端
@张嘉夫:10 月 11 日,Twitter 重新上架了经过 Project Catalyst 重写后的 Twitter for Mac 客户端。新版 Twitter 客户端支持拖拽、深色模式、多窗口浏览以及快捷键操作等功能。
文章
🐕 Swift 的字符串为什么这么难用?
@Damonwong: Swift 的字符串的设计可以说是 Swift 中最难以理解的语法之一了。不过,我们周报的小伙伴 @kemchenj 同学写了一篇通俗易懂的文章,详细阐述了
- 为什么会存在
Collection.Index
这个设计 - 目前的
Collection.Index
是怎么设计的,存在哪些问题 - 未来的
Collection.Index
会怎么改进
感兴趣的同学可以仔细阅读一下,算是一篇不错的 Swift 语法进阶文章。
@莲叔:基于移动端的 H5 快开优化已经成为各大 App 的标配模块,通常的做法有资源缓存、离线包、data prefetch等等。本文作者首先分析了 H5 页面加载的流程,并在 iOS 上基于 WkWebview 通过实现请求的拦截,实现了资源缓存的机制。文章整体不算体系,因为并没有包含很多 state of the art 的优化方式,但在 WkWebview 的使用技巧上介绍的还比较详细,仍是一篇值得一看的文章。
🐕 The Simple Life(cycle) of a SwiftUI View
@老驴: 相信大家对 UIKit 中 UIView,UIViewController 的生命周期一定是熟悉到不能更熟悉了,这些知识点也一直是面试中的常考问题。那么在 SwiftUI 中,View的生命周期又是怎么样的呢?这篇文章就介绍了作者对其的理解。有兴趣使用 SwiftUI 的同学么可以简单的了解一下。
🐕 Reducing iOS storyboard merge hell
@J_Knight_:作者介绍了几种避免在合并代码时在 storyboard 引起的冲突的方法:使用 SwiftUI,使用 nib,Diff 工具,锁定文件等方法。经常使用 storyboard 开发的朋友可以看一下。
🐕 iOS 13
@老峰:本文来自 Mattt (@mattt) 分享了 iOS 13 中的一些新的 API 及框架:
- Presentation framework:App 通过 URL 获取站点元数据,以富文本形式展示 URL, 可以丰富 URL 的展现形式。
- SFSpeechRecognizer:设备内置语音识别,支持离线语音识别。
- URLSessionWebSocketTask:提供 Web Socket 系统原生框架,不在需要使用三方框架。
- BackgroundTasks framework:新的 Background Tasks 框架可以更方便的执行后台任务。
- OperationQueue progress:OperationQueue 通过 progress 属性可以方便的获取运行队列的进度。
文章还分享了 MapKit、JavaScriptCore、UIKit 等新的 API,限于篇幅不一一列举。
🐎 Alternatives to protocols in Swift
@四娘:Swift By Sundell 这周探讨的是 protocol 的替代品,虽然 Swift 称自己为 protocol-oriented,但实际上有很多问题都不适合使用 protocol,作者列举了一些例子并且提供了更好的解决方案。
🐎 重磅|庖丁解牛之——Flutter for Web
@邦Ben:众所周知,1.9 版本加入了 Flutter Web 的支持,但也仅限于技术预览。该文通过移动端原理和 Web 方式进行对比,直观感受到两者区别(差异主要在 dart:ui 和 engine 这一层)。
优点:通过 HTML + CSS + Canvas 的方式更好的兼容,低成本迁移(Flutter 上层直接兼容) 缺点:dart2js 生成的代码过大,功能尚不完备,使用的 BitmapCanvas 会导致一些缩放场景有性能问题
在这么一个优秀的分层设计中,Flutter Web 仍值得继续期待,等到可用版本出现。
🐕 A Comprehensive Guide to All 120+ Settings URLs Supported by iOS and iPadOS 13.1
@享耳先森:iOS 的 Settings
App 一直都支持通过 URL Scheme 的方式打开某一个子项,本文作者收集了 120+ 个在 iOS 13 下支持的 URL,大家可以浏览看是否有满足自己需求的点。需要注意的是:这些 URLs 随时可能在未来 iOS 版本中移除或被 Apple 审核团队以 Private API 为由拒绝上架。
🐕 Reverse Engineering Swift Applications
@极速男孩:本篇文章主要介绍了如何去反编译一个 Swift 的 app 。首先介绍了使用如何通过 Name Mangling 和 swift-demangle 来反编译得到一个 Swift 的 app 中的方法。Class Dump 现在已经对 Swift 提供了有限的支持。最后探索了去 hook swift 中的方法的可能。
代码
基于 NSProxy 开发的支持数据绑定、事件绑定的库
@含笑饮砒霜:GICDataBinding 是一款基于 NSProxy 开发的数据绑定库,支持数据绑定(单向、双向)和事件绑定,重要的是支持 JS 表达式,当然也支持 Swift 开发,但是要求 Swift 中的数据类型必须是 NSObject 子类。基于 GICDataBinding 数据绑定系统,可以做一些之前实现起来比较复杂的功能,比如重新思考 ViewModel 的定义,将 ViewModel JS 化、配合 Texture 实现整个 UI 基于绑定系统的可响应式设计等。
@CrazyCoderShi:Flutter Animation Set 由 YYFlutter 团队开发, 简洁的 API , 简化了动画实现, 特别是组合动画. 项目默认实现了不少酷炫的效果, 开箱即用.
Yaap: Yet Another (Swift) Argument Parser
@anotheren:Yaap 是一个 Swift 写的 CLI 库,它使用了 Mirror
和 Property Wrapper
简化参数和选项的声明,并具有以下特性:
- 强类型的参数和配置解析;
- 自动生成帮助和使用信息;
- 多命令路由;
- 智能拼写错误提示
如果你也在从事命令行相关的开发,不妨试一试。
xcderiveddata
@Jimq:用于打印 Xcode 工程的派生数据目录(derived data directory)的命令行工具,也支持把结果传递给 xcodebuild 或其他命令去自行化你的构建过程。
音视频
ggtalk | 互联网公司的开发流程
@ggtalk:最近几个月翻译组的大事之一,就是蓉老师的开发流程调研。为了获得最新最全的信息,专程去广州和各位大佬讨论开发流程。蓉老师基本聊遍了国内的一线互联网公司,整理了一份文档,会在这期中详细介绍。
除了介绍流程,我们还讨论了一些相关内容,比如流程存在的问题、国内流程做的好的公司、研究流程对我们自己的意义等等。如果你的团队正面临流程问题,应该能从这期节目中获得一些灵感。
这期讲的内容比较长,容易走神,大家可以对照着文字版来听:文字版流程整理摸我。
内推
老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
如果你想找工作,点这里:www.yuque.com/iosalliance…
如果你想招人,点这里:www.yuque.com/iosalliance…
当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
关注我们
我们开通了公众号,每期发布时公众号(OldDriverWeekly)会推送消息,欢迎关注。

同时也支持了 RSS 订阅:github.com/SwiftOldDri… 。
说明
🚧 表示需翻墙,🌟 表示编辑推荐
预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
转载自:https://juejin.cn/post/6844903965956505613