老司机 iOS 周报 #242 | 2023-04-24 #3972
ChengzhiHuang
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
老司机 iOS 周报,只为你呈现有价值的信息。
你也可以为这个项目出一份力,如果发现有价值的信息、文章、工具等可以到 Issues 里提给我们,我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 Issues 提出。
新闻
Enabling the Inspection of Web Content in Apps
WKWebView 与 JSContext 在 iOS 16.4 SDK 中新增了属性
isInspectable
,只有开启了这个属性才会允许检查 Web 的元素,并且这个属性可以在任意时间修改(不需要重启 APP 或者重新创建 Webview 实例)。对于需要调试 Webview 的同学们需要对这个属性进行适配(开启)之后才能像往常一样通过 Web Inspector 进行查看。 Developer - 设计开发加速器
挑战:让你的 App 更加无障碍 2023 年 5 月 10 日
在本次线上讲座中,你将了解如何通过 Apple 操作系统提供的无障碍功能、无障碍 API 和开发者工具,来为每一个人打造卓越的用户体验。
参加线上讲座的开发团队,可在讲座当天报名参与无障碍适配挑战活动,通过审核后我们将邀请你参加 5 月 18 日在上海设计与开发加速器举办的无障碍宣传日线下活动,在线下你将了解到更多无障碍开发技术,以及与其他开发者进行交流和互动。我们还将邀请使用无障碍功能的用户来分享他们的故事,了解 App 是如何赋能他们的日常生活;以及有经验的开发者来分享他们的工程实践,看如何在产品内部推进无障碍适配。你还可获得一对一咨询和深度辅导,获得针对你 App 的无障碍优化建议。
线上讲座:探索 Vision 框架
Vision 框架支持人脸检测、文本检测、二维码检测、图像配准、特征追踪等一系列能力。探索如何通过 Vision 框架,在你的 App 内应用计算机视觉相关能力,了解一系列 API,用来在图片和视频上执行不同的任务。
文章
抖音 Swift 编译优化 - 基于自定义 Toolchain 编译提速 60%
@kemchenj:抖音基础技术团队在这篇文章里分享了一个很有趣的编译问题:
由于上述的三点,底层库的 API 修改很容易触发大面积的编译缓存失效,并且由于上层模块的直接依赖变多,导致缓存失效的判断逻辑也会变得更加复杂,最终导致编译时间增长。
Swift 这么设计的原因主要是为了兼容 C/OC 头文件的行为,在 Swift 的论坛里开发组也曾经解释过具体的细节。
但实际代码里很少会依赖这个行为,抖音的技术团队就尝试定制 Toolchain,增加更多选项去限制这个行为的生效范围,从而最终实现编译提速 60%。
PC GWP-ASan 方案原理 | 堆破坏问题排查实践
@xuyafei86:众所周知,与内存访问相关的崩溃是最难分析的崩溃类型之一。对于这种崩溃,线上采集到的崩溃日志能提供的有效信息十分有限。因为堆破坏的时间往往在发生崩溃很早之前,等到发生崩溃时,上下文早已丢失,而从崩溃的位置回溯堆破坏的源头,是一件非常有挑战性的工作。
GWP-ASan 是 Google 主导开发的用于检测堆内存问题的调试工具。它基于经典的 Electric Fence Malloc 调试器原理,概率采样内存分配行为,抓取内存问题并生成上传崩溃报告。其可以检测 Use-after-free、Buffer-overflow 和 free-invalid-address 等内存访问相关的错误。
本文介绍了剪映专业版接入字节内部 APM-PC 平台 GWP-ASan 功能的实践,包含对监控原理说明和 5 个线上实例。感兴趣的同学可以阅读原文了解。
🐎 What I Learned Writing My Own CloudKit Syncing Library
@Smallfly:CloudSyncSession 是一个基于 CloudKit 框架的 Swift 库,旨在使编写支持同步和离线功能的应用程序更容易。作者通过一篇文章介绍了该库的开发背景,设计思路,以及使用姿势。
🐎 Mastering Canvas in SwiftUI
@享耳先森:SwiftUI 中,绘制图形可以使用高级的
ShapAPI
,也可以使用Canvas
直接绘制。本文介绍Canvas
的基本用法,也介绍了如何使用Canvas
绘制文本、图片,甚至给Canvas
添加动画。🐎 3 mistakes to avoid with async / await
@Cooper Chen:本文作者在 Swift 中使用 async/await 要避免的 3 个错误,其中包括:
🐕 淘宝 iOS 拍立淘微距能力探索与实现
@EyreFree:在最近两年苹果发布的 iPhone13 Pro Max 和 iPhone14 Pro Max 系列的手机上,如果使用三方主流 App 进行近距离对焦,会产生画面模糊的问题。为了优化用户体验,拍立淘 iOS 端开发团队进行了摄像头切换(微距)问题的分析和解决。本文从原理开始分析,通过层层拆解,把「微距实现」这个命题划分成为三个主要的解决目标:变焦系数、光照水平、焦点位置的确定。并围绕链路实现、性能、适配三个层面进行可行性验证,完成微距能力的落地。建议正在研究相关问题的同学阅读。
🐎 Using DWARF to find call sites of inline functions
@Damien:DWARF 是一种调试信息文件格式,被许多编译器和调试器用来支持源代码级调试。它解决了一些程序性语言的要求,如 C、C++ 和 Fortran,并被设计为可扩展到其他语言。DWARF 是架构独立的,适用于任何处理器或操作系统。如果你对使用 DWARF 来查找内联函数的调用点有需要,不妨阅读下本文,这对你或许有很大的帮助。
🐎 Reducing iOS app size using linker and why_load
@Leo:why_load 是 Apple LD 提供的一个链接选项,通过这个选项我们可以了解到一个 Symbol 在链接形成最终产物的时候为什么被保留了下来。文中介绍了如何利用这个选项,来减少我们 App Extension 产物中保留的符号,进而优化包体积。当然,类似的方法也可以用于主二进制,不过对于主二进制的优化要更加的慎重,避免引入新的问题。
摸鱼周报
@摸鱼周报 #91:第 91 期摸鱼周报,一起来看下本期概要:
内推
重新开始更新「iOS 靠谱内推专题」,整理了最近明确在招人的岗位,供大家参考
具体信息请移步:https://www.yuque.com/iosalliance/article/bhutav 进行查看(如有招聘需求请联系 iTDriverr)
关注我们
我们是「老司机技术周报」,一个持续追求精品 iOS 内容的技术公众号,欢迎关注。
关注有礼,关注【老司机技术周报】,回复「2021」,领取 2017/2018/2019/2020 内参
同时也支持了 RSS 订阅:https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。
说明
🚧 表示需某工具,🌟 表示编辑推荐
预计阅读时间:🐎 很快就能读完(1 - 10 mins);🐕 中等 (10 - 20 mins);🐢 慢(20+ mins)
This discussion was created from the release 老司机 iOS 周报 #242 | 2023-04-24.
Beta Was this translation helpful? Give feedback.
All reactions