WWDC 2022 Keynote 中苹果给我们介绍了 iOS 16 中一个比较亮眼的更新:Live Activity(实时活动),开发者可以在锁屏页面上放置一个可以“实时”更新的 Widget,比如外卖或者打车应用,在开启实时活动之后我们可以在锁屏页上实时看到外卖小哥/司机与我们的距离及预计到达时间。但是这一 API 及对应功能并没有第一时间放出,而是随着 iOS 16 Beta4 一起放出:【实时活动...
日常开发中常常遇到某些类及其引用的资源文件仅在
Debug
或内测版本中生效,而不希望带到线上版本。因为一来会增加包体积,二来会把一些内部功能的相关接口暴露,导致可能的一些动态调试。那么有没有避免的方案呢?Pod
答案肯定是有的,通常的做法是把对应功能抽成单独的
pod
库,然后仅Debug
模式才集成到主工程,发出去的版本不集成。通常方式如下,以FLEX
为例:pod 'FLEX', '~> 2.0', :configurations => ['Debug']
但是如果某些强耦合主工程无法拆成独立
pod
的功能,这种方式可能就不再适用了。条件编译
pod
这条路走不通,有没有其...卖个关子
// 代码段1 class Manager: NSObject { deinit { print("deinit " + String(format: "%p", self)) } } class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() var x: Manager? = Manager() x = nil } }
// 代码段2 @interface Man...
本文基于 Session 10077 - Eliminate animation hitches with XCTest
概述
iOS中动画无处不在,应用中优雅流畅的动画可以显著提升用户体验,同理卡顿也会影响用户体验。通过这个 WWDC Session,我们将学会如何通过 XCTest 来检测滑动和动画过程中的掉帧,进而在开发阶段就能解决问题,避免糟糕的用户体验。
如何定义卡顿(Hitches)
当用户在页面上操作时,比如上下滑或者点击导航栏上的返回按钮时,主要焦点集中在手势的交互上。良好的交互体验是提供“众享丝滑”的响应速度,反之用户将会感知到明显的卡顿。我们将这些用户可感知的“抖动”称之为卡顿(H...
名字取得有点标题党,不然没人愿意点进来😂😂😂
1.背景
项目前后两个版本,线上监控显示整体启动时间缩短了近 300ms,而且包体积也变小了 5M(提交到 App Store 的ipa包)。但是新版本没有大的需求插入,只是
bugfix
版本,启动阶段的代码也没有相关改动。为何会引起包体积和启动时间的变化呢?使用
Instrument
多次跑耗时分析,发现两个版本启动阶段的getMethodNoSuper_nolock()
函数的耗时的差异非常明显。关键是这个还是系统函数,看起来是消息发送阶段的耗时增加了。2.继续分析
上面
Instrument
的方法耗时在设置隐藏系统库之后,对比发现没有明...