老司机 iOS 周报,只为你呈现有价值的信息。
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新手推荐
🌟 🐕 详解 WWDC 20 SwiftUI 的重大改变及核心优势
@zvving:在苹果统一平台的大方向下,SwiftUI 不仅是用来替代 UIKit 的布局引擎,也是统一苹果所有终端视图的『终极方案』。在这个背景下,不难理解 SwiftUI 2.0 大量的内容更新。
本文汇总了其中的重大改变,并介绍 SwiftUI&Swift 在淘宝的落地情况。都 0202 年了,如果你的团队还没开始用 Swift,是不是该反思一下?😄
🌟 我们用 Flutter 写了一套全新的 Flutter 开发者工具
@CrazyCoderShi:Dart DevTools 是由官方团队产出的 Flutter 开发工具,日前官方团队用 Flutter 重新构建了 Dart DevTools ,目前已经在最新版本的 Flutter 插件中集成。在重构原有工具的基础上新增了不少新工具,比如 Layout Explorer , Networking View 等。强烈建议正在使用 Flutter 开发的同学仔细研究一番。
🐢 PRODUCT THINKING · 产品沉思录
@zvving:老朋友 少楠(Plidezus)是资深产品经理、设计师、连续创业者,还曾开过超市、做过外卖。同时,他更是充满好奇的互联网玩家:三年前,少楠发起并持续建立了这个数字后花园——产品沉思录。从人物集、产品历史、到跨界、认知与思维,不一而足,其中有不少很难收集的珍贵资料。
本期把产品沉思录推荐给大家,在这个后花园闲逛一会儿,相信你会发现诸多宝藏。
文章
🐕 Swift 5.3 又更新了什么新奇爽快的语法?
@享耳先森:Swift 从 WWDC14 发布至今,已经经过了五年多的迭代,5.3 随着 WWDC20 一起发布,看过相关 Session 的同学一定对 [SE-0279] Multiple trailing closure 印象深刻。本文作者给大家列出了 Swift 5.3 的一些改动点,同时对 Swift 的现状与未来,作者也给出了他自己的一些看法。
🐕 Core Image:iOS 图像处理技术追踪
@anotheren:Core Image 是 Apple 平台上最实用的图像处理技术,并在各个平台上都提供了大量现成的工具以快速实现图片/视频的处理。本文介绍了在 WWDC20 中,苹果官方针对 Core Image 技术在三方面做的优化:Core Image 对视频/动图的支持、基于 Metal 构建 Core Image (CI) Kernel 以及 Core Image 的 Debug 支持。
🐕 iOS 大解密:玄之又玄的 KVO
@含笑饮砒霜:说到 KVO,不少人都知道其本质是基于被观察的实例的 isa 生成一个新的类并在这个类的 extra 空间中存放和 KVO 操作相关的关键数据,然后这个新的类以一个中间人的角色借助 extra 空间中存放各种数据完成复杂的方法调度。但是如果仿照系统的 KVO 来实现一套自定义的 KVO,你会发现各种诡异的 bug。本文从汇编层面向大家介绍了 KVO 的本质并提供了相关 bug 的解决方法,其分析和解决问题的思路很是值得我们借鉴。
🐕 WWDC:无线网络优化实践,带来哪些启发?
@Damien:本文从问题背景、实现原理、实践经验和业务价值角度出发深入介绍了 WWDC20 中推出的加密 DNS 以及受限网络中推送这 2 个新网络特性。并且在后文中介绍了手淘在新网络特性如 IPv6、HTTP/2、TLS1.3、MTCP 以及 HTTP/3 中的实践经验和落地情况,对正在做网络相关的体验优化和升级的同学提供了很好的参考资料。
🐕 GitHub 用对了吗?Flutter 团队分享如何管理大型开源项目
@老峰:Flutter 作为近年热度非常高的跨端开源项目之一,从开发者那里收到了大量的反馈,以及海量的 issue。本文主要分享了 Google Flutter 团队使用 GitHub 管理维护大型开源项目的经验,包括使用 GitHub 管理海量 issue,issue 标签化优先级排序方案,通过 issue 完结率衡量项目运行状况,如何清理积压的 issue 等。
🐢 连续 3 年最受欢迎:Rust,香!
@tom510230:本文全面地介绍了 Rust 语言的语言特性,包含以下几个 issue
- 性能:对比下来完胜 go 和 python,这个网上一直有人做 profile,感兴趣的同学可以找到很多的佐证,最大的原因是因为 Rust 的 runtime 不需要 JIT 之类的机制,编译后的 bitcode 即可直接运行
- 内存安全性:所有权规则类似一个单引用计数的机制,考虑一下如果内存一直只有一个变量(所有者)能够操作的话,自然没有内存竞争的问题
- 变量生命周期:编译器会自动发现潜在的野指针问题,要修正了以后才能够编译通过
- 线程安全:在 Rust 中,线程间的数据共享是通过很“别扭”的方式来完成的,可以理解为就是显式获取,显式释放,显式转移所有权,然后才能完成多线程通信,但是这样子却可以通过代码逻辑,保证了不会出现多线程访问边界资源导致的多线程崩溃问题
- 开发效率:看了以上的描述,可以大概看出来编写合理的 Rust 代码,需要很高的入门门槛,调试工具的缺失也一直是 Rust 被人诟病的问题
- 跨平台:因为轻量级运行时的关系,所以 Rust 嵌入到各种语言的运行环境都没有什么压力
- 社区生态:很弱,Stack Overflow 上面基本都是问问题居多,基础组件也有很多缺失,需要自己发明轮子
总体而言,国内大规模使用 Rust 的公司,目前公开分享的,除了字节跳动以外,还有就是在区块链领域中的高性能表现了,期待后续随着越来越多大厂的加入,Rust 会变得越来越香
代码
如何实现一行命令自动生成 Flutter 插件
@邦Ben:首先,这个插件是基于 DartNative 框架衍生出来的辅助代码生成工具,用于提高开发 DartNative 框架开发效率,因此不能单独使用。所以如果对 DartNative 还不了解,那请先看下下方两个链接。简而言之,就是通过 antlr 进行分析 Native 语言(Objective-C, JAVA, Swift, Kotlin 等)得到 AST ,最后生成 Dart 代码(当然,你可以手写 ~)。对于不使用 DartNative 的读者来说,也可以了解一下工作原理,这类工具在基础工程效率方面或许可以给你带来不少启发。
参考阅读:
jVirus/swiftui-2048
@JonyFang:一个很棒的 SwiftUI 开源项目,使用了纯 SwiftUI 2.0 编写了经典的 2048 游戏,同时支持 iOS 和 iPadOS,也可以轻松拓展以支持 macOS。另外,作者对 iPad 纵向和横向的屏幕旋转也做了切换支持。对于想学习 SwiftUI 的读者,这是一个可以拿来作为参考的示例项目~
内推
老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。
如果你想找工作,点这里:www.yuque.com/iosalliance…
如果你想招人,点这里:www.yuque.com/iosalliance…
当然,也欢迎你关注我们每一期的周报,我们会在每期周报底部及时更新编辑内推岗位。
关注我们
我们开通了公众号,每期发布时公众号(LSJCoding)会推送消息,欢迎关注。
同时也支持了 RSS 订阅:github.com/SwiftOldDri… 。
说明
🚧 表示需某工具,🌟 表示编辑推荐
预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)