Skip to content

# 老司机 iOS 周报 #138| 2020-11-30

Compare
Choose a tag to compare
@linwenbang linwenbang released this 30 Nov 06:48
· 2950 commits to master since this release
0d9e903

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

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

WWDC20

本周在周报公众号上我们推送了 2 篇 WWDC20 内参专栏内的文章,每篇都很精彩!

新闻

App Store Connect 放假安排:12月23日-27日

@Parsifal:请确保您的 App 为最新版本,以准备迎接假期。App Store Connect 在12月23日至27日(太平洋时间)期间不接受新 App 和 App 更新,因此请提前处理任何与发布相关的计划、提交和审批事宜。其他 App Store Connect 功能将不受影响。

文章

🌟 🐕 iOS AOP 方案的对比与思考

@Damien:AOP 意为面向切面的编程方式,在不修改源代码的情况下,给程序动态统一添加功能的技术。本文详细的介绍了目前 iOS 的各项 AOP 方案(Method Swizzle, Aspects, MPSwizzler, ISA-swizzle KVO, Fishhook, Thunk, Clang 插桩)的原理实现、使用场景以及问题缺陷。让我们的工具箱又多出了一些可供选择,同时进一步加深对静态和动态语言的理解,也对程序从静态到动态整个过程理解更加深入。

🐕 UME - 丰富的 Flutter 调试工具

@含笑饮砒霜:鉴于在开发 Flutter 过程中遇到的一些问题,西瓜视频 Flutter 基础团队开发了一款调试工具包 UME,内部集成了丰富的调试工具, 包括但不限于如下功能:

  • Widget 信息:查看当前选中 widget 的大小、名称,文件路径以及代码所在行数
  • Widget层级:查看当前选中 widget 的树层级,以及它 renderObject 的详细 build 链
  • ShowCode: 查看到当前页面的页面代码
  • 内存泄露:检测 flutter 内存泄漏
  • 内存查看:查看当前 Dart VM 对象所占用情况
  • 对齐标尺:测量当前 widget 所在屏幕的一个坐标位置,开启吸附开关后可以自动吸附最近 widget
  • 颜色吸管:查看到当前页面任何像素的颜色,方便调试 UI
  • 网络调试:支持所有网络请求抓取,mock 响应内容等
  • Logger:展示使用 debugprint 函数打印的日志
  • Channel Monitor:查看所有的 channel 调用,包括方法名,时间,参数,返回结果

🐕 What went wrong with the libdispatch. A tale of caution for the future of concurrency

@Leo:libdispatch 是 Apple 推出的帮助开发者利用好多核性能的底层框架,简洁的 block 相关的 API 让并发编程变得前所未有的容易。但很多情况下 libdispatch 被滥用,导致引起线程爆炸,代码调试困难等问题。本文作者讲述了自己使用 libdispatch 的痛点,分析了 swift 即将引入的并发相关特性的,文章条理清晰,能看出作者对并发编程有着独到的见解。

🐕 MongoDB Realm 使用初体验 | 奇谈

Realm 是一个专门为移动端设计的数据库。主要特点是性能好,易使用。MongoDB 是一个流行的 NoSQL 数据库,主要是在服务器端使用。MongoDB 收购 Realm 半年后推出全新的 MongoDB Realm。移动端的数据库还是 Realm,本地的数据存取接口几乎保持一致。通过 Realm sync 这个程序把数据同步到 MongoDB Atlas 中。本文介绍了 MongoDB Realm 的基本功能和使用方法。

🐎 DispatchSource: Detecting changes in files and folders in Swift

@四娘:GCD 里的 DispatchSource 家族包含了一系列监听系统事件的 API,例如 Mach 事件通知,文件变更通知等等。在这篇文章里,作者以实时日志浏览为例展示了这一套 API 的使用方式。

🐢 端智能:理解 Vision 框架中的图片技术How to display Vision bounding boxes

@EyreFree:Vision 是 Apple 2017 年和 Core ML 一起推出的、基于 Core ML 封装的图像识别库,它包含有人脸识别、机器学习图片分析、条形码识别、文字识别等基础功能。本次推荐的两篇文章对 Vision 的图片重点区域、图片分类、图片相似度、人脸识别技术等主要应用进行了介绍和演示,推荐大家都来看一下,说不定下次遇到的图形相关的业务就可以用它来实现了。

🐢 一篇吃透 Dark Mode ,搞定“暗黑/深色”适配

@AidenRao:本文讲述 APP 中各组件适配 Dark Mode(暗黑模式 或 深色模式)的方式和注意事项,以及一些细节的处理建议。
但更重要的,是让大家掌握适配暗黑模式的工作量。避免轻易开工,导致进退两难。

  • 从“层级”、“颜色”两方面讲述 iOS 安卓适配方法。
  • 讲述 Dark 适配需要关注的细节:字色、图标、插图等
  • Dark 适配的难点:适配场景多,Dark 模式下无障碍阅读的适配,以及容易出现遗漏。

🐢 移动端 UI 一致性解决方案

@Parsifal:大型 App 往往承接着来自不同团队的业务,可能各个业务组都有着自己的产品、设计和研发团队。随着版本的不断迭代,大型 App 在设计层面、研发层面、测试层面和产品层面均会面临着效率低、UI 体验不一致等问题。美团外卖团队分享了他们在移动端 UI 一致性解决方案上的探索。这是一套需要各个团队达成共识共同去维护的标准化组件,相比于完成这一套方案的建设,或许去推进各个业务团队接受并使用也是不小的挑战。

🐎 Comparing iPhone OS 1.0 with iOS 14 using tree maps

@Parsifal:2007 年第一款 iPhone 发布至今,iPhone 的硬件在不断更新,软件也从 iPhone OS 1.0 到了 iOS 14。本文通过 tree map 带我们一览其中的结构变化过程。

赞助者

虚位以待..

非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 iTDriverr 哦~

内推

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

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

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

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

关注我们

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

同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom

说明

🚧 表示需某工具,🌟 表示编辑推荐

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