[转载] 学会黑科技,一招搞定 iOS 14.2 的 libffi crash
苹果升级 14.2,全球 iOS 遭了秧。libffi
在 iOS14.2 上发生了 crash, 我司的许多 App 深受困扰,有许多基础库都是用了 libffi
。
[转载] 学会黑科技,一招搞定 iOS 14.2 的 libffi crash
苹果升级 14.2,全球 iOS 遭了秧。libffi
在 iOS14.2 上发生了 crash, 我司的许多 App 深受困扰,有许多基础库都是用了 libffi
。
[转载] 抖音iOS最复杂功能的重构之路–播放器交互区重构实践
本文以抖音中最为复杂的功能,也是最重要的功能之一的交互区为例,和大家分享一下此次重构过程中的思考和方法,主要侧重在架构、结构方面。
交互区是指播放页面中可以操作的区域,简单理解就是除视频播放器外附着的功能,如下图红色区域中的作者名称、描述文案、头像、点赞、评论、分享按钮、蒙层、弹出面板等等,几乎是用户看到、用到最多的功能,也是最主要的流量入口。
无埋点核心技术:iOS Hook在字节的实践经验
众所周知,精确的推荐离不开大量埋点,常见的埋点采集方案是在响应用户行为操作的路径上进行埋点。但是由于 App 通常会有比较多界面和操作路径,主动埋点的维护成本就会非常大。所以行业的做法是无埋点,而无埋点实现需要 AOP 编程。
一个常见的场景,比如想在UIViewController
出现和消失的时刻分别记录时间戳用于统计页面展现的时长。要达到这个目标有很多种方法,但是 AOP 无疑是最简单有效的方法。Objective-C 的 Hook 其实也有很多种方式,这里以 Method Swizzle 给个示例。
本文讲述的技术点属于比较极致和新颖的包大小优化技术,文章会从二进制、汇编指令的层面来分析 oc 代码对包大小的影响。接下来会从以下三个方面进行讲述:
二进制层面分析 oc 代码对包大小的影响
编码上优化包大小的 tips
总结各种 tips 的收益
[转载] iOS 高刷屏监控 + 优化:从理论到实践全面解析
Apple 在今年推出了支持 ProMotion 屏幕的 iPhone 设备,让 App 在 iPhone 13 Pro 和 iPhone 13 Pro Max 上的最大刷新帧率可到达 120Hz,极大优化了应用滑动/动画的流畅度体验。
ProMotion 并不是一个新的概念,早在 2017 年,Apple 推出的第二代 iPad Pro 便搭载了这一刷新率最高可达 120Hz 的屏幕。在 iPad 上,高刷新率默认对所有 App 启用。而也许是出于能耗的考虑,在 iPhone 上,Apple 并未将这个能力自动对所有 App 启用,而是需要开发者手动添加配置项来进行适配。
近期有消息指出 iOS 15.4 beta 修正了这一行为,经过笔者验证额外的配置项依然是需要的,并且本文内容依然适用。
本文介绍了在 iPhone 上对 ProMotion 动态帧率的适配时观察到的现象和遇到的问题,尝试推测了背后的原理,并探讨了解决问题的可能思路,最终基于调研结果在国际化短视频业务上线优化方案,取得了核心业务指标的收益。
之前在文章 M1 Mac 外接屏幕 开启 HiDPI 方法 介绍了怎么使用免费版本的 BetterDisplay 来开启 M 系列芯片 Mac 外接屏幕的 HiDPI, 但是有个问题是每次拔插 HDMI 数据线或者是 Mac 休眠再激活, 外接屏幕会开始闪, 不知道是不是免费版才有的问题, 我试着重启 BetterDisplay 就好了. 但是每次点击 BetterDisplay 退出, 再找到 BetterDisplay 打开也挺费时间的 (估计在 10 秒左右吧), 一天弄几次影响心情. 我使用 Raycast 写了个脚本, 快速重启 BetterDisplay, 缓解这个问题.
Spine 是一套骨骼动画的成熟框架, 可以方便的接进各种游戏引擎, 在spine-runtimes 可以找到各种平台/游戏引擎的运行环境. 跟 Spine 类似的还有DragonBones.
在之前的文章MessageThrottle 结合业务需求的修改 中, 我介绍了 MessageThrottle 的两种节流以及一个防抖模式, 并添加了第四种均匀调用
模式, 但是在实际大规模使用时却遇到了崩溃(每天百万分之一左右).
[转载] 音乐研发必备:理解 MIDI 协议与标准 MIDI 文件格式
MIDI 协议即数字音乐接口(Musical Instrument Digital Interface),是电子乐器、合成器等演奏设备之间的一种即时通信协议,用于硬件之间的实时演奏数据传递。MIDI 协议诞生之初希望解决的事情是通过统一通信协议让不同乐器制造商的设备可以互相兼容,比如把 Roland 键盘接入 Yamaha 合器。MIDI 协议的编码经过拓展后也可以作为一种记录音乐信息的文件格式,被称为”标准
MIDI 文件格式“。
在音乐技术研发中除了需要与音频打交道之外,许多场景中还需要直接处理音符信息。如果说 wav 与 mp3 记录的是音乐的物理现象,那么 MIDI 协议与 MIDI 文件则记录的是音乐这门语言的”文字”。本文的目的是让开发中涉及到音乐”本体“的同学可以了解这一最通用的演奏信息交互和文件存储格式的编码规则。同时通过对 MIDI 事件流等概念的认识,能在开发中更好地抽象自己的业务逻辑。