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