
NSTimeInterval 是 Apple 在 Foundation 框架(iOS / macOS 开发)中定义的一个时间间隔类型,用于表示以秒为单位的浮点时间值。
类型定义
objc 它本质上是一个double 类型(64位双精度浮点数),因此可以表示小数秒和很大的时间值。单位
以秒(second)为单位。
可以是正数、负数或小数(例如 1.5 表示 1.5 秒)。
精度
理论上可精确到微秒级(10⁻⁶ 秒),但实际精度受系统定时器限制(通常是毫秒级)。
日期时间差计算
let date1 = Date() let date2 = Date(timeIntervalSinceNow: 3600) let interval: NSTimeInterval = date2.timeIntervalSince(date1) // 3600 秒动画时长
UIView.animate(withDuration: 0.3) { ... } // 0.3 就是 NSTimeInterval计时器与延迟执行
Timer.scheduledTimer(timeInterval: 1.0, ...) // 每 1 秒触发DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) // 延迟 0.5 秒
媒体播放
let currentTime = audioPlayer.currentTime // 类型为 NSTimeInterval
最大范围:约 ±100,000,000 年(因 double 精度限制)。
时间基准:许多方法(如 Date.timeIntervalSince1970)以 Unix 时间戳(1970年1月1日起的秒数)为基准。
系统相关性:部分 API(如 CACurrentMediaTime())使用更精确的系统启动后的秒数(CFTimeInterval,本质也是 double)。
| 类型 | 本质 | 用途 |
|---|---|---|
| NSTimeInterval | double,秒为单位 |
Foundation 时间差、动画时长 |
| CFTimeInterval | double,秒为单位 |
Core Foundation / Core Animation 时间 |
| TimeInterval | Swift 中对 NSTimeInterval 的别名 |
同 NSTimeInterval(Swift 中推荐使用) |
| dispatch_time_t | 纳秒为单位的整数 | GCD(Grand Central Dispatch)延迟时间 |
在 Swift 中,通常直接使用 TimeInterval(它是 NSTimeInterval 的类型别名),代码更简洁: