老司机 iOS 周报 #162 | 2021-06-07

Posted 老司机技术周报

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了老司机 iOS 周报 #162 | 2021-06-07相关的知识,希望对你有一定的参考价值。

阅读原文,体验更佳!

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

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

WWDC 2021

明天,也就是 6 月 8 日凌晨 1 点,WWDC 21 正式拉开序幕,周报编辑组也将投入到 WWDC 21 的相关活动中去,所以下周周报将会停更一期,欢迎大家关注我们接下来的一系列 WWDC 专题活动!

???? WWDC 21 内参作者招募 & WWDC 20 内参免费领取

@Parsifal:伴随着 WWDC 即将开幕,由周报牵头举办的一年一度 WWDC 内参活动也开始了筹备工作。今年我们想尝试从广大读者中也邀请一些对 WWDC 内参编写感兴趣的人一起参与内参的编写。另外,我们所有读者都可以免费领取 WWDC 20 的专栏。不管是想参与 WWDC 21 编辑工作,还是想免费领取 WWDC 20 内参,都可以点这里 - 我是福利

???? WWDC.playground by SwiftGG[1]

@Parsifal:WWDC 21 将于 6 月 8 日凌晨 1 点正式在线上举行,今年国内的 iOS 社区组织了多个不同形式的活动,WWDC.playground 就是其中一项。SwiftGG 邀请了来自世界各地的设计师、产品经理以及 Swift 社区活跃开发者,站在他们各自的视角,和大家一起聊聊 WWDC21。帮助大家更好地跟上 WWDC21 的节奏,尽快把新技术集成到自己的产品中。值得一提的是,本次活动被苹果官方列入了 Beyond WWDC 的专题列表,快来关注吧~

???? A Swift developer’s WWDC dreams - 2021 edition[2]

@四娘:今年 SwiftBySundell 也在博客里分享了他作为 Swift 开发者的心愿单,包括:

  • SwiftUI 提供更多可以自定义的接口

  • 让所有接口都 Async/await 化

  • 可交互的 Widget

  • 更加强大可靠的工具链

  • Xcode on iPad

  • 使用 Swift 全栈开发

期望苹果今年也可以帮助所有开发者喜加一。

WWDC NOTES[3]

@老峰:WWDC NOTES 是一个持续更新 WWDC Session 的网站,包含历年新功能、新设计、新框架、新开发工具,也可以在这个网站上提交新的笔记,对 WWDC21 感兴趣的同学可以收藏此网站,接下来会同步更新 WWDC21 相关内容。

新手推荐

???? Dart 里的类型系统

@邦Ben:该文是翻译文,文内主要讲述了 Dart 里面的类型系统,适合新手入门的时候看看。里面也提到一些不常见用法,例如 names.forEach(print) 等价于 names.forEach((name){print(name);});;以及可调用对象 Foo()(); 这种比较 trick 的用法,详细可以看下文章。

文章

???? 无埋点核心技术:iOS Hook 在字节的实践经验[4]

@JonyFang:常见的埋点采集方案是在响应用户行为操作的路径上进行埋点,但由于 App 通常会有比较多界面和操作路径,主动埋点的维护成本会很大。所以行业的做法是无埋点,而无埋点实现需要 AOP 编程。

实现方案的迭代及实践中碰到的坑:

  1. 方案的迭代

  • Method Swizzle

  • 代理模式

  • 方案接入后的踩坑

    • 野指针引发的问题的分析定位及修复方案

    • RxCocoa 引发的问题的分析定位及修复方案

    Hook 不是很优雅的方式,原因在于随着实际应用场景复杂性的变化,任何 Hook 都有可能存在兼容性的问题。文中最后也给出了相应的建议:

    • 谨慎使用 Hook;

    • Hook 系统接口一定要遵循一定的规范,不能假想只有你在 Hook 这个接口;

    • 不要假想其他人会怎么处理,直接把多种方案集成到一起,构建多种场景,测试兼容性。

    ???? 字节小哥带你揭秘 Dart VM 魔术盒[5]

    @Damien:本篇文章是由字节移动平台团队带来的 Dart VM 文章,本文会详细介绍在 Dart VM 中的 Dart VM Isolate, Run From Source Via JIT 以及 Running from Snapshots 3个核心运行机制,文章内容层层深入带读者逐步理解其原理,对学习 Flutter 以及 Dart 底层感兴趣的同学可以好好研读一番。

    ???? Adding Swift Code as Custom LLDB Command[6]

    @含笑饮砒霜:多数开发者工作中都会使用到 LLDB 命令,但是很多人却不知道可以使用纯 Swift 代码定义自己的 LLDB 命令。本文介绍了如何添加你的第一个 LLDB 命令、添加带参数的 LLDB 命令以及将复杂的 Swift 代码转换为 LLDB 命令。有些自定义的命令特别有用,会让我们在开发中受益。

    ???? ???? Insidious Bugs #3: Apple App Site Association File Identifiers[7]

    @Smallfly:本文介绍了 Lickability 团队 App 在支持 Associated Domains 能力时的踩坑经历。根据苹果文档介绍,在创建 apple-app-site-association 文件时,其中的 appIds 字段值需由 <Application Identifier Prefix>.<Bundle Identifier> 格式组成,却没有说明 Application Identifier Prefix 前缀是什么。他们经过一系列的尝试之后,在 Team Identifier 和 App Identifier 之间找到了答案。

    想了解更多关于 universal link 相关的应用,建议阅读周报编辑 @味精 的这篇文章 - Universal Link 前端部署采坑记。

    ???? What's new in Swift 5.5?[8]

    @AidenRao:Swift 5.5 的第一个测试版本,即将在 WWDC 上放出。它将带来大量改进,async/await, actors, throwing properties 等,本文通过代码示例,逐一介绍每个改动。

    • async/await:异步函数,允许将异步代码当作线性同步代码来编写

    • actors:在并发环境中可以安全使用的类,只能由单个线程访问 actor 内的可变状态

    ???? 听说你想写个 React

    @老驴:这是个手把手教你从 0 开始写一个 React 系列文章。目前包含了 4 篇,跟作者一起动手实现 dom,jsx,virtual dom,Component。相信和作者一起写一遍之后,你对 React 的理解能更深入一层。

    ???? 论证:iOS 安全性,为什么需要审核?[9]

    @anotheren: 本文来自 Epic Games 与 Apple 诉讼中,针对 “iOS安全性” 这个问题进行展开的辩论,即:苹果可以让 iOS 系统,在应用分发第三方访问等方面更像 macOS,也不会在安全性方面受到影响。辩论中的内容,对于我们近一步了解 iOS/macOS 的安全机制十分有用,推荐阅读。

    ???? 揭秘苹果应用审核团队(史上最全版)[10]

    @Parsifal:苹果的应用审核团队一直都很神秘,这篇文章从网上可查的一些蛛丝马迹,试图揭开审核团队的神秘面纱,读读还是比较有趣的,毕竟我们长期要与审核团队打交道,多了解一些他们的事情,不是坏事儿。

    ???? 面试过 500+ 位候选人之后,想谈谈面试官视角的一些期待

    @莲叔: 一篇不错的讲通用面试技巧的文章,内容如标题,从一个大厂面试官的角度给出了一些实用中肯的建议。大厂的面试说难也难,说不难也不难。核心原因就是虽然 bar 很高,却有一套通用的方法论。比如不管哪个公司,面试官考察的套路都差不多。这篇文章乍看上去比较虚,但仔细的一条条看下来就是把这个套路很直白的说给你听。有需要的同学可以多多研究。

    ???? 手把手教你 Debug — iOS 14 ImageIO Crash 分析

    @水水:记录了一次 iOS 14 上大量出现的 ImageIO 相关堆栈的 Crash 问题的定位、分析、反汇编、最后修复的过程。读者不仅能够参考修复类似问题,也可以学习和借鉴本文 Crash 解决的思路。

    摸鱼周报

    @摸鱼周报 #13:本期摸鱼周报讨论了一个 Swift 5 出现的 module stability 问题,即使用不同版本 Swift 编译器编译的 binary 如何兼容。

    概念篇来到了程序员必知的硬核知识大全的最后一节,这节介绍的内容有:BIOS、汇编、虚拟机、外围中断、DMA 等。博客篇收集了一些介绍 watchdog 的文章,这些内容可以帮助你了解什么是 watchdog 以及如何定位这类问题。另外我们还收录了一个非常有意思的软件 Whatpulse,它可以为你统计你的键盘和鼠标使用情况,比如一天中你敲击了多少次按键以及各个按键的使用频率等。

    工具

    ???? XD to Flutter 2.0 现已发布!

    @极速男孩: Adobe XD由 gskinner 与 Adobe 联合开发, 你可以将你的设计导出成 Flutter 代码,在 Adobe XD 2.0中,加入了 "堆栈" 和 "滚动组"的支持,可以转换成常见的 Flex Widget、Column、Row 以及 SingleChildScrollView 等Flutter Widget。

    音视频

    AirTag 有用,但不是完全有用[11]

    @没故事的卓同学:我最近做了一个播客卖鱼桥分桥,里面会有一些内容围绕程序员的生活方式展开,如果有感兴趣的朋友欢迎关注一下。未来也会出几期和 WWDC 有关的内容,也安排了针对一些开发者的采访。欢迎大家订阅。

    赞助者

    虚位以待..

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

    内推

    微医云招聘高级 iOS 开发工程师,详细内容可参考 - [杭州萧山] 微医 - 微医云 - 高级 iOS/Android 开发工程师,有意者简历投至邮箱:zhangmw1@wedoctor.com

    老司机周报团队联合知识小集和 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)

    参考资料

    [1]

    WWDC.playground by SwiftGG: https://swift.gg/wwdc/

    [2]

    A Swift developer’s WWDC dreams - 2021 edition: https://www.swiftbysundell.com/articles/a-swift-developers-wwdc-dreams-2021/

    [3]

    WWDC NOTES: https://wwdcnotes.com/

    [4]

    无埋点核心技术:iOS Hook 在字节的实践经验: https://juejin.cn/post/6968275950786215944?utm_source=gold_browser_extension#heading-0

    [5]

    字节小哥带你揭秘 Dart VM 魔术盒: https://juejin.cn/post/6960932663095984136

    [6]

    Adding Swift Code as Custom LLDB Command: https://swiftsenpai.com/testing/add-custom-lldb/

    [7]

    ???? Insidious Bugs #3: Apple App Site Association File Identifiers: https://lickability.com/blog/insidious-bugs-number-3-apple-app-site-association-file/

    [8]

    What's new in Swift 5.5?: https://www.hackingwithswift.com/articles/233/whats-new-in-swift-5-5

    [9]

    论证:iOS 安全性,为什么需要审核?: https://juejin.cn/post/6967199105541996575

    [10]

    揭秘苹果应用审核团队(史上最全版): https://juejin.cn/post/6970363897668698148/

    [11]

    AirTag 有用,但不是完全有用: https://www.xiaoyuzhoufm.com/episode/60b419020013dcfe5cf0d581

以上是关于老司机 iOS 周报 #162 | 2021-06-07的主要内容,如果未能解决你的问题,请参考以下文章

老司机 iOS 周报 #164 | 2021-06-28

老司机 iOS 周报 #159 | 2021-05-17

老司机 iOS 周报 #161 | 2021-05-31

老司机 iOS 周报 #158 | 2021-05-10

老司机 iOS 周报 #165 | 2021-07-05

iOS 符号化:基础与进阶