NSDate, CFAbsoluteTimeGetCurrent, CACurrentMediaTim的区别
1.从框架的角度
- NSDate 属于Foundation
- CFAbsoluteTimeGetCurrent 属于Core Foundation
- CACurrentMediaTime 属于QuartzCore
2.本质区别
- NSDate 或 CFAbsoluteTimeGetCurrent 返回的时钟时间将会从网络时钟同步。
- 从时钟偏移量的角度 mach_absolute_time() 和 CACurrentMediaTime 基于内建时钟, 能够更准确的测试时间,并且不会更具外部的时间变化而变化(例如 时区变化等),它和系统的 upTime 有关,系统重启后 CACurrentMediaTime 也会重新设置
3. 常用用法
- NSDate \CFAbsoluteTimeGetCurrent 常用于日常时间,时间戳表示, 与服务器的数据交互等场景
- CFAbsoluteTimeGetCurrent 相当于 [NSDate date]timeIntervalSinceReferenceDate];
- CACurrentMediaTime 常用于测试代码效率