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)
dopo il 30 esegue la sua quasi una seconda via, e la console di cominciare ad agire strano con che mostra due e due linee di stampa contemporaneamenteCome eseguire un'azione esattamente dopo 0,3 secondi per un dato numero di volte?
9.0 - 9.88806998729706 : 30
9.3 - 9.88832598924637 : 31
Esiste un modo per un XCTest
per avvicinarsi al effettivamente facendo le richieste " al momento giusto "? Come ottenere la richiesta che dovrebbe essere fatto dopo 9 secondi non essere fatto dopo 9,88 secondi ..
Ho rimosso il tag 'XCTest' in quanto non ha nulla di specifico da fare con XCTests. È solo una coincidenza che tu abbia bisogno di questo per un test. Anche se ... mi piacerebbe vedere cosa stai provando a testare in questo modo (e poi aggiungere il tag). – nhgrif
@nhgrif è importante che XCTest sia mentione perché in realtà chiama waitForExpectationsWithTimeout() - Non sono sicuro che funzionerà con, ad esempio, il blocco del thread principale nei test – hakonbogen
Se ritieni che menzionare 'XCTest' è importante, allora tu * davvero * bisogno di fornire il test che stai cercando di eseguire per il contesto. Così com'è ora, questo è un po 'un [problema XY] (http://meta.stackexchange.com/q/66377/244435). – nhgrif