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

原文转载自 「老司机 iOS 周报」 ( https://github.com/SwiftOldDriver/iOS-Weekly/releases/tag/#162 ) By ParsifalC

预计阅读时间 0 分钟(共 0 个字, 0 张图片, 0 个链接)

ios-weekly
老司机 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

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

🐎 A Swift developer’s WWDC dreams - 2021 edition

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

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

WWDC NOTES

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

新手推荐

🐕 Dart 里的类型系统

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

文章

🐕 无埋点核心技术:iOS Hook 在字节的实践经验

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

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

  1. 方案的迭代
    • Method Swizzle
    • 代理模式
  2. 方案接入后的踩坑
    • 野指针引发的问题的分析定位及修复方案
    • RxCocoa 引发的问题的分析定位及修复方案

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

🐎 字节小哥带你揭秘 Dart VM 魔术盒

@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

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

🐎 🐞 Insidious Bugs #3: Apple App Site Association File Identifiers

@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?

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

🐎 听说你想写个 React

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

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

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

🐢 揭秘苹果应用审核团队(史上最全版)

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

本文由 iHTCboy 推荐

🐎 面试过 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 有用,但不是完全有用

@没故事的卓同学:我最近做了一个播客卖鱼桥分桥,里面会有一些内容围绕程序员的生活方式展开,如果有感兴趣的朋友欢迎关注一下。未来也会出几期和 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)

more_vert