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

Posted 老司机技术周报

tags:

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

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

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

WWDC 21

???? 线下沙龙:杭州场圆满结束!上海场迎来第二波免费门票开放~

@Parisfal:WWDC 系列活动 - 淘系技术.T 沙龙杭州专场在上周六下午已经圆满结束了!杭州专场同样邀请到了 4 位国内讲师以及 2 位特邀国外讲师。他们分别是来自手淘终端平台技术的无线开发专家倾寒、来自有赞的移动技术负责人 Jackie、来自抖音创作工具基础架构团队的移动端架构师 Crespo 以及来自西瓜视频的移动端工程师黄骋志,国外的特邀嘉宾还是我们熟悉的 Hacking With Swift 系列书籍作者 Paul Hudson 和 objc 联合创始人 Chris Eidhof。沙龙现场近 160 位开发者朋友相聚一堂,技术探讨氛围十分浓烈。

错过杭州场的朋友不用着急,上海场我们也将在这周六正式举办!上海场之前在我们 WWDC.playground by SwiftGG 直播活动中开放了第一批超过 100 张门票,很快就售罄了,现在第二波门票也正式开放,数量有限,想来现场的朋友抓紧扫码报名~

???? WWDC 21 内参[1]

@Parisfal:除了线下沙龙在火热进行,我们内参的更新也如火如荼。已经订阅的读者有福啦,本周我们一次性更新了 29 篇 session 的解读,每篇文章都是经过不断推敲和审核才完成。感谢所有作者和审核人员。

  • @Style月月:【WWDC21 10032】探索 WKWebView 新增功能

  • @琦乐无穷的小蘑菇:【WWDC21 10089】探索电子病历在 HealthKit 中的使用

  • @Leppard:【WWDC21 10145】Advanced Video Quality Tool 使用指北

  • @Rec:【WWDC21 10256】初探 Swift 算法和集合 & 【WWDC 10168】开发 Mail App 扩展

  • @Watermelon:【WWDC21 10268/10269】探索 Xcode Cloud Workflows

  • @Ronbin:【WWDC21 10298】在 HomeKit 中添加对 Matter 协议的支持

  • @阿尘:【WWDC21 10039】Create ML 新妙用:手势分类和手部动作分类 &【WWDC21 10040】使用 Vision 框架来检测人物、人脸和姿势

  • @atuo:【WWDC21 10057】让你的 iPad 应用更进一步

  • @ljcoder:【WWDC21 10118】CloudKit 自动化开发

  • @Ckitakishi:【WWDC21 10121】为内容丰富的应用量身打造高效 VoiceOver 体验

  • @Frank:【WWDC21 10212】强大的 Network Instruments,诊断你的 APP 网络请求及流量控管

  • @希徳:【WWDC21 10264】让你的 App 支持快速备忘录

  • @Damien:【WWDC21 10061】Meet TextKit 2

  • @Tamarous:【WWDC21 10063】更好用的 Sheet

  • @鸭嘴兽:【WWDC21 10085】聚焦苹果隐私原则

  • @刘杰:【WWDC 2021 10096】 苹果为了你的隐私又做了什么

  • @happts:【WWDC21 10098】在 Spotlight 中呈现 App 的数据

  • @志远:【WWDC21 10115】依托更完善的 App 分析指标,优化 App 展示页面的新方案

  • @DengXiaoBai:【WWDC21 10158】使用 VideoToolbox 探索低延时视频编码

  • @旷明:【WWDC21 10166/10167/10235/10236】DocC: 未曾设想的苹果文档

  • @张凡:【WWDC21 10203】Xcode Organizer 功能升级

  • @Semyon:【WWDC21 10204/10261/10170】云签与 Mac App 分发流程简化探索

  • @PerTerbin:【WWDC21 10209】通过断点技巧让调试更高效

  • @jojotov:【WWDC21 10254】Swift 并发编程:原理探究

  • @小铁匠Linus:【WWDC21 10259】键盘布局指南

  • @Uyloal:【WWDC21 10023/10260】构建使用键盘导航的应用程序

  • @瓮杰:【WWDC21 10265】将你的应用沉浸在空间音频中

文章

???? ???? 在 iOS 客户端上通过 bitcode 为第三方库修复 bug

@JonyFang:本文主要记录了便利蜂技术团队 iOS 移动端遇到的一个疑难 bug 的排查过程,介绍了他们是如何通过修改 bitcode,成功在没有源码的情况下为有问题的三方库修复 bug 的。

文中用到的知识点总结如下:

  1. 崩溃现场中,在主线程发现 exit,多半是由于 C++ 全局变量析构 + 多线程导致的;

  2. 在有源码的情况下,可以通过调整编译参数消除全局变量析构;

  3. 使用 7-zip 可以无损解包静态库文件;

  4. 使用 otool 可以看到目标文件是否嵌入了 bitcode;

  5. 使用 llvm 提供的工具,可以对 bitcode 进行修改、重新生成机器码;

  6. 通过私有 API 可以模拟出应用退出,制造复现场景。

???? ???? iOS Pod 构建缓存方案

@红纸:编译加速通常有两种方案二进制化和源码编译缓存,相较于二进制化,源码编译能解决二进制化带来的问题:编译宏问题、函数不存在等一系列问题。文中,作者使用 基于 MD5 和XCache 来做缓存机制。使得每次编译都是增量编译而不是全量编译~感兴趣的同学可以看下作者的方案描述~

此外本文是基于 XCache 实现的编译缓存机制,在即将到来的《老司机技术沙龙-上海场》中,第二场来自 Bilibili 的同学会介绍基于 Bazel 的远端编译缓存技术实践,也欢迎大家来现场聆听~

???? 深入理解 WKWebView(入门篇)—— WebKit 源码调试与分析

@享耳先森:移动互联网时代,网页依旧是内容展示的重要媒介,开发者经常需要与 WKWebView 打交道,但当遇到疑难问题时官方文档不足以解惑。本系列文章介绍了如果从 WebKit 源码入手,建立可调试工程,基于此深入理解 WebKit 核心内容。

???? Swift 并发初步[2]

@zvving:今年 Swift 的最大更新无疑是对 async/await 的支持,作为新手的你很可能已经跃跃欲试。但并发编程向来以错综复杂著称,光是并发/并行、同步/异步、串行/并行就已经让人傻傻分不清,更不必提 ActorStructured ConcurrencyAsync Sequence 这些翻译起来都困难的概念。如果你也有以上这些疑惑,或许可以从本文中找到答案。这篇图文并茂的博客同时也是喵神新书《Swift 异步和并发》的开篇之作。

本文推荐语来自 弥明-KeithBird

???? How Swift runs an async executable[3]

@kemchenj:Swift 5.5 最大的更新就是加入了 Concurrency,@main 也添加了对应的支持,让我们可以将 main 函数标记为 async,由编译器负责生成代码,提供一个 async context 让 async main 函数执行,这篇文章就深入了 Swift 源码来探究其中的奥秘。

摸鱼周报

@摸鱼周报 #16:iOS 摸鱼周报不知不觉已经发布到第 16 期了,为了了解大家对周报的想法和建议,前段时间我们做了一次问卷调查。根据问卷反馈,我们停更一期进行了格式上的调整:去掉了那些 Bug编程概念模块,增加了本期话题面试解析

改版之后内容更讲究实用性,特别是呼声很高的面试解析模块,我们对众多面试题目进行筛选,选出一些高频且实用的内容,然后用更通俗易懂的话讲明白其中的知识点,首期面试解析带来的是网络相关的一些题目。

其他更多内容欢迎阅读本期完整版进行探索,如果有其他建议也欢迎后台留言告诉我们。

代码

世界上第一个浏览器源码[4]

@折腾范儿_唯敬:这个 repo 其实算得上是一个考古 repo 。维基百科上记载,世界上第一个浏览器是在 NextStep 的电脑上(repo 的 readme 上有索引),用 C 和 Objective-C 语言完成的,被 repo 作者从原始 WorldWideWeb 的仓库中剥离,保存于此。虽然这个项目中的代码过于老旧,已经无法编译,但有兴趣的人还是可以前往一探究竟,看看上古时代的浏览器代码大概是什么样子。

VideoLab - 高性能且灵活的 iOS 视频剪辑与特效框架

@anotheren:这是一个为视频剪辑编辑处理的框架,使用了 AVFoundation 和 Metal 作为其处理核心,目前已有以下特性:

  • 高性能实时剪辑与导出

  • 高自由度组合视频,图片,音频

  • 支持音频音高设置,音量调节

  • 支持 CALayer 矢量动画,可以支持复杂的文字动画

  • 支持关键帧动画

  • 支持类似于 AE 的预合成

  • 支持转场

  • 支持自定义各类特效,如 LUT 滤镜,Zoom Blur 等等(MSL 编写脚本)

如果你也有视频处理的相关需求,不妨看看能否满足项目需要。

音视频

???? “Structured concurrency” with special guest Doug Gregor[5]

@老驴:这期 Swift By Sundell 节目请到了 Swift 开发组的成员之一 Doug Gregor 来聊聊 Swift Concurrency 和背后的故事。

赞助者

虚位以待..

非常感谢以上赞助者的支持,如果你也有赞助我们的兴趣,欢迎添加微信 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)

参考资料

[1]

WWDC 21 内参: https://xiaozhuanlan.com/wwdc21

[2]

Swift 并发初步: https://onevcat.com/2021/07/swift-concurrency/

[3]

How Swift runs an async executable: https://oleb.net/2021/async-program-launch-sequence/

[4]

世界上第一个浏览器源码: https://github.com/cynthia/WorldWideWeb

[5]

“Structured concurrency” with special guest Doug Gregor: https://www.swiftbysundell.com/podcast/99/

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

老司机 iOS 周报 #163 | 2021-06-21

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

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

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

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

iOS 符号化:基础与进阶