老司机 iOS 周报 #217 | 2022-09-19
老司机 iOS 周报,只为你呈现有价值的信息。

你也可认为这个项目出一份力,假如发现有价值的信息、文章、东西等能够到 Issues 里提给咱们,咱们会赶快处理。记住写上引荐的理由哦。有建议和意见也欢迎到 Issues 提出。

文章

字节跳动 DanceCC 东西链系列之 Xcode LLDB 耗时监控计算计划

@含笑饮砒霜:在 字节跳动 DanceCC 东西链系列之 Swift 调试功用的优化计划 一文中,介绍了如何运用自定义的东西链,来针对性优化调试器的功用,解决大型 Swift 项意图调试痛点。为了精确测量经过优化后的 LLDB 调试 Xcode 项目效率提高作用,衡量项目收益,需求开发一套能够一同获取 Xcode 官方东西链与 DanceCC 东西链调试耗时的耗时监控计划。本文胪陈了 DanceCC 提出了一套专门的计划,计划原理基于 LLDB Plugin,利用 Fishhook,从 LLDB 的 Script Bridge API 层面阻拦 Xcode 对 LLDB 调用,以此来进行耗时监控计算。

这一年,我对终端组织与技能架构的考虑【专家讲技能】

@莲叔:闲鱼是国内较早进行 Flutter 事务测验,也是较早的全面拥抱 Flutter 的 App。本篇文章里,闲鱼的技能负责人宗心共享了他关于移动开发行业从软件架构和组织方法两个视角的变迁,之后提出了未来可能的一种岗位分工:应用研发工程师和根底设施开发工程师,而且发布了闲鱼围绕这样的岗位分工开发的一套基于 Flutter 的 UI 开发烘托引擎 KUN。移动开发到如今已经开展的超过十年的时刻,研发团队相比最开的 iOS/Android 开发已经演化出了更杂乱的方法,这篇文章是对这些趋势一个比较不错的概括,对自己技能栈觉得苍茫的同学也能够看看。

基于 React Native 的动态列表计划探究

@Damien:动态烘托结构大家一定不生疏,比如阿里的 DinamicX、Tangram 大家应该都很了解了,基于 DSL 的动态化计划尽管有功用上的一些优势,但是究竟不是图灵完备的,一些需求逻辑动态下发的需求完成成本偏高,网易云音乐团队带来了他们的最佳实践,基于 React Native 的动态列表计划。简略来说便是将 ReactNative 容器内嵌在 RecyclerView 的 ViewHolder 中,页面主体结构还是由 Native 开发和烘托,首屏加载速度得到了确保,局部的 RN 完成也使页面取得动态化的才能。有兴趣的同学无妨一读。

终极 C++ 避坑攻略

@xuyafei:C++ 是一门古老的言语,但仍然在不间断更新中,不断引证新特性。但与此一同 C++ 又甩不掉巨大的历史包袱,而且 C++ 的规划初衷和理念造成了 C++ 反常杂乱,还呈现了很多不合理的“缺点”。本文首要有 3 个意图:

  1. 总结一些 C++ 晦涩难懂的语法现象,解释其背面原因,作为防踩坑之用
  2. 和一些其他的编程言语进行比较,列举它们的优劣
  3. 宣布一些我自己作为 C++ 程序员的观点和感受

如何判别 ScrollView、List 是否正在翻滚中

@老峰:SwiftUI 并没有供给这方面的 API 。本文将介绍几种在 SwiftUI 中获取当前翻滚状况的方法,每种方法都有各自的优势和局限性。

  1. Introspect:经过访问其背面 Delegate 的 UIKit 控件;长处精确、及时、体系担负小;缺点向后兼容性差。
  2. Runloop:创立绑定于不同 Runloop 模式下的 TimerPublisher ,完成对翻滚状况的判别;长处简略、精确、及时;缺点只支撑 iOS,屏幕中只能有一个可翻滚控件。
  3. PreferenceKey:子视图能够经过 preference 视图修饰器向其先人视图传递信息;长处支撑多平台,前后兼容;缺点需求为可翻滚容器的子视图添加修饰器,判别的精确度没有前两种方法高。

另外作者针对以上计划写了 IsScrolling 开源库,有需求的同学能够参阅。

你真的懂 iOS 的反常捕获吗?

@邦Ben:咱们的开发中一定会接触到反常捕获,本文作者从操作体系层面进行剖析。在触发反常的时候,会让应用从用户态切换到内核态进行处理。文章中介绍到,反常分红两类:1. 硬件反常,2. 软件反常。触发了反常,一条包括反常信息的 Mach Message 会经过 Match Exception 机制进行传递到注册的端口,然后被处理。Mach Exception 假如没有在 tread 和 task 中得到处理,那么会转成成 Unix Signal 信号。所以需求做的便是捕获 Mach Exception 以及 Unix Singal,具体的代码,文章中进行了叙述。想具体了解的,具体看一下文章,一同能够去参阅一些开源的 CrashReport 库。

Clip control on the Apple GPU

@AidenRao:Apple 最新的 Mac 系列包括他们内部的 “M1 ” 体系芯片,具有一个定制的 GPU,既没有公共文档也没有开源驱动程序。苹果为 App Store 开发者供给的 Metal 只具备有限的 API,缺少对 OpenGL 功用的支撑。文章作者供给了多种解决计划,去支撑 OpenGL 的 clip control,最终完成在 Mac OS 上运转游戏 Neverball。

特效侧用户体会优化实战 — 包体积篇

@JonyFang:在了解了特效根底的包体积组成,能够针对性的对编译选项、代码进行调整,以优化包体积。一同介绍了包体积监控东西,输出每个需求带来的包体积增加巨细、包体积增加原因,及时给出包体积告警、定位反常增量 case,减缓包体积增加,推进事务优化。

What’s the “any” keyword? Understanding Type Erasure in Swift

@享耳先森:Swift 的强类型是程序健壮性的柱石。但在过去,有些特殊场景下强类型给开发者带来一些不必要的躲避作业,Swift 5.7 引进的 any 关键词很好的解决了这一问题。本文解释类型擦除的概念,以及过去是如何做的?有 any 后有什么不同?建议结合 Existential any in Swift explained with code examples 一同阅览。

iPhone 14 Screen Sizes

@Barney:本文首要介绍了 2022 年 iPhone 14 屏幕尺寸变化的回忆,并配有简略易懂的样例图,一目了然。

东西

Regex101, 正则调试在线东西

@anotheren:Regex101 是一个正则调试的在线东西,供给了很多的帮助信息来优化正则编写,甚至还供给了 Code Generator 来直接生成相关言语的代码(支撑 Swift)。不仅仅是便利新手,假如你也经常与正则打交道,能够试试这个东西。

摸鱼周报

@摸鱼周报 #68:第 68 期摸鱼周报来了,一同看下本期概要:

  • 本期话题:iPhone14 灵动岛构思前瞻
  • 本周学习:OC 泛型中的 __covariant__contravariant
  • 内容引荐:编译和热重载优秀文章引荐
  • 摸一下鱼:关于 iOS 开发国际化相关东西引荐

重视咱们

咱们是「老司机技能周报」,一个持续寻求精品 iOS 内容的技能大众号,欢迎重视。

重视有礼,重视【老司机技能周报】,回复「2021」,领取 2017/2018/2019/2020 内参

一同也支撑了 RSS 订阅:github.com/SwiftOldDri… 。

阐明

表明需某东西, 表明编辑引荐

估计阅览时刻: 很快就能读完(1 – 10 mins); 中等 (10 – 20 mins); 慢(20+ mins)