老司机 iOS 周报 #108 | 2020.04.06

3,737 阅读6分钟

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

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

新闻

🐎 通用购买现可包含 Mac App

@水水:现在,可以在通用购买中包含 app 的 macOS 版本,让用户只需购买一次,即可在 iOS、iPadOS、macOS、watchOS 和 Apple tvOS 上使用您的 app 和 App 内购买项目。为此着手准备,只需在 Xcode 中为您跨平台的 app 绑定相同的 bundle ID,并在 App Store Connect 中为通用购买设置好 app 记录。

新手推荐

🐢 字符串比较中 NSNumericSearch 选项的工作原理

@极速男孩:比较版本号是我们开发中常见的需求,在字符串中我们经常会使用到 NSNumericSearch 对当中的数字进行比较,本文主要介绍了在各种不同情况下字符串通过 NSNumericSearch 比较的结果和从中得到原理。

文章

🌟 🐢 Apple 操作系统可执行文件 Mach-O

@J_Knight_:Mach-O 在 Mach 内核的操作系统(macOS,iPadOS 和 iOS)中使用。学习它有助于理解程序是如何加载到这些系统和如何执行的,也有助于了解符号查找,函数调用堆栈符号化等等。本文结合代码,从 Mach-O 的构建方法,如何组织,如何工作,导入和导出的方法,对其做了比较详细的介绍。对于想学习 Mach-O 的读者来说,本文是一篇可以初步了解 Mach-O 的文章。

🌟 🐎 字节跳动为什么选用 Flutter:并非跨平台终极之选,但它可能是不一样的未来

@looping:本文是 InfoQ 对字节跳动移动平台部 Flutter 架构师、知名博客 Gityuan 博主袁辉辉采访内容的整理,主要有分析了大家看好 Flutter 以及字节跳动选择 Flutter 的原因,还分享了公司内部在 Flutter 实践和推广过程中遇到的一些问题和阻力,最后也提出了他个人对跨平台技术的一些看法,这些都可以作为我们在做跨平台技术选型时的参考。

🐕 A Look Into ArgumentParser

@xiaofei86:最近,苹果开源了由 Swift 实现的用于解析命令行参数的 Swift Argument Parser。在了解基本使用后,本文将带你深入探究 ArgumentParser 的内部实现,了解 ParsableCommand 协议和四个属性包装器背后隐藏着的复杂性。通过本文,你可以了解到 Swift 团队为实现优雅接口所付出的巨大努力,并希望你也可以欣赏这些优雅设计。

🐕 iOS 端矢量图解决方案汇总(SVG 篇)

@含笑饮砒霜:SVG 作为目前在 Web 上最流行的矢量格式,在 iOS 端的支持可以说是一言难尽。文中列举了几个目前已有的实现,可以说是各有优劣,具体使用何种方案还要根据自己的实际需要来选择。

🐕 全网最详!暗黑模式在 Trip.com App 的实践

@红纸:本文是携程团队对于适配 Dark Mode 的实践总结,从视觉设计、设计方案(颜色映射及插画设计)等角度来阐述 DarkLight 在设计上的区别。最后配套有 iOS/Android/RN 三端的适配方案可供开发大大们进行参考。

往期周报中的两则相关内容推荐给大家:Office 开发组件 DarkModeKit 和开发适配相关的 How To Adopt Dark Mode In Your iOS App 🌙

🐕 Kotlin/Native and Xcode integration insights

@老峰:Kotlin/Native 是一种基于 LLVM 将 Kotlin 代码编译成本地二进制文件的技术,它可以在没有虚拟机的情况下运行。本文介绍了在 Xcode 集成 Kotlin/Native 工具集实现,从而实现 iOS 调用 Kotlin 公共业务代码库的具体操作过程,感兴趣的读者可以进一步了解。

🐕 静态插桩的方式来实现 Hook Method

@Parsifal99 期周报推荐过美团欧阳大哥关于「静态拦截 iOS 对象方法调用的简易实现」一文,该文从另一个新颖的角度“静态库会将自己引用的外部符号单独保存在一张表中”出发,提出了 Method Hook 的新思路。本篇文章则基于这个理论完成了实践。文中作者总结了几点实践过程中遇到的问题,包括对静态库和目标文件的理解、Python 实现的坑等方面,值得我们借鉴。

本文由作者 maniackk 自荐。

工具

Echo

@EyreFree:Echo 是一款简单易用、插件化易扩展、大屏显示和操作的客户端研发调试工具,可以实时查看 App 各类数据(网络请求、日志、埋点等),也可以无须改动代码快速修改预览 App 的效果。相比其他 Debug 工具,它还具有以下优势:

  • 大屏幕:显示效果更优,不影响原 App 的用户操作,使用体验更好;
  • 扩展性:内置通用模板及插件机制可快速扩展新功能,只需关注业务数据即可,降低新功能扩展成本;
  • 聚合型:收敛客户端研发调试工具为一体,提高 RD 和 QA 同学的效率;
  • 缓存机制:插件自带缓存机制,出现问题时即使脱离大屏,后续也可快速连接排查定位。

代码

🐎 TextureSwiftSupport

@JimQ:脸书大厂出品的 Texture 采用者众多,SwiftUI 风格的 Texture 现在可以尝试了(非官方),基于 Swift 为 SwiftUI 引入的新特性 Function builders

音视频

道长三十:工科生如何去美国读研?

@张嘉夫:ggtalk 这期的嘉宾是目前在美国工作的故胤道长,总节目时长接近五个小时,按照内容分为三期。第一期道长主要和大家聊聊在 CMU 读研的过程,从准备、申请到入学之后的各种经历。

ATP 371: Chris Lattner 访谈

Chris Lattner 大神再一次作客 ATP,这次聊的话题有:

  • Swift for TensorFlow
  • MLIR(本期的标题来源)
  • Swift 统治世界
  • SwiftUI & Combine
  • Swift ABI Stability

这期节目跟上次一样也是非常欢乐,聊 MLIR 之前 Chris 还问主持人这个话题对他来说会不会太过极客?🤣

There's another project called MLIR. Have you heard of anything about that? Do you want to talk about that? Or is that too geeky for John Siracusa?

总的来说这期节目非常推荐收听,另外没有听过上次访谈的读者,也直接可以看道长整理的文字版 Chris Lattner 访谈录

内推

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

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

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

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

关注我们

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

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

说明

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

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