老司机 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 的。
文中用到的知识点总结如下:
崩溃现场中,在主线程发现
exit
,多半是由于 C++ 全局变量析构 + 多线程导致的;在有源码的情况下,可以通过调整编译参数消除全局变量析构;
使用 7-zip 可以无损解包静态库文件;
使用 otool 可以看到目标文件是否嵌入了 bitcode;
使用 llvm 提供的工具,可以对 bitcode 进行修改、重新生成机器码;
通过私有 API 可以模拟出应用退出,制造复现场景。
???? ???? iOS Pod 构建缓存方案
@红纸:编译加速通常有两种方案二进制化和源码编译缓存,相较于二进制化,源码编译能解决二进制化带来的问题:编译宏问题、函数不存在等一系列问题。文中,作者使用 基于 MD5 和XCache 来做缓存机制。使得每次编译都是增量编译而不是全量编译~感兴趣的同学可以看下作者的方案描述~
此外本文是基于 XCache 实现的编译缓存机制,在即将到来的《老司机技术沙龙-上海场》中,第二场来自 Bilibili 的同学会介绍基于 Bazel 的远端编译缓存技术实践,也欢迎大家来现场聆听~
???? 深入理解 WKWebView(入门篇)—— WebKit 源码调试与分析
@享耳先森:移动互联网时代,网页依旧是内容展示的重要媒介,开发者经常需要与 WKWebView
打交道,但当遇到疑难问题时官方文档不足以解惑。本系列文章介绍了如果从 WebKit 源码入手,建立可调试工程,基于此深入理解 WebKit 核心内容。
???? Swift 并发初步[2]
@zvving:今年 Swift 的最大更新无疑是对 async/await
的支持,作为新手的你很可能已经跃跃欲试。但并发编程向来以错综复杂著称,光是并发/并行、同步/异步、串行/并行就已经让人傻傻分不清,更不必提 Actor
、Structured Concurrency
、Async 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的主要内容,如果未能解决你的问题,请参考以下文章