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)
30后执行它几乎是第二关,和控制台开始显示两个和两个打印线怪怪的同时如何在0.3秒后精确地执行一个动作达到给定的次数?
9.0 - 9.88806998729706 : 30
9.3 - 9.88832598924637 : 31
有没有办法为XCTest
更贴近实际做的请求“在正确的时间“?喜欢把自己不被9.88秒后9中那样秒钟后应该做的请求..
我删除了'XCTest'标签,因为它没有任何与XCTests相关的特定内容。这只是巧合,你需要这个测试。虽然...我很想看看你真的想要这样测试(然后再添加标签)。 – nhgrif
@nhgrif重要的是XCTest被提及,因为它实际上调用了waitForExpectationsWithTimeout() - 我不确定这是否可以用于例如在测试中阻塞主线程 – hakonbogen
如果您觉得提及'XCTest'很重要,那么您*真的*需要提供您正在尝试为上下文运行的测试。就目前来看,这是一个[XY问题](http://meta.stackexchange.com/q/66377/244435)。 – nhgrif