是否有一种简单的方法可以非常精确地获得时间?
我需要计算方法调用之间的一些延迟.更具体地说,我想计算UIScrollView中滚动的速度.
let expecation = expectationWithDescription("do tasks")
for i in 0...40 {
let afterTiming = 0.3 * Double(i)
let startTime = CFAbsoluteTimeGetCurrent()
let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(afterTiming * Double(NSEC_PER_SEC)))
dispatch_after(delayTime, dispatch_get_main_queue()) {
let timeElapsed = CFAbsoluteTimeGetCurrent() - startTime
print("\(afterTiming) - \(timeElapsed) : \(i)")
}
}
waitForExpectationWithTimeout(14)
Run Code Online (Sandbox Code Playgroud)
在30执行它几乎一秒钟之后,控制台开始表现奇怪,同时显示两条和两条打印线
9.0 - 9.88806998729706 : 30
9.3 - 9.88832598924637 : 31
Run Code Online (Sandbox Code Playgroud)
有没有办法XCTest让我们更接近"在正确的时间"实际执行请求?就像在9.88秒后没有完成9秒后应该完成的请求一样.