我有一個延遲電腦在遊戲中移動的問題。NSTimer - 如何在Swift中延遲
我發現了一些解決方案,但他們不適用於我的情況,例如
var delay = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: nil, userInfo: nil, repeats: false)
我試圖用這個功能fire
,但也沒有影響。
還有其他的可能性嗎?
我有一個延遲電腦在遊戲中移動的問題。NSTimer - 如何在Swift中延遲
我發現了一些解決方案,但他們不適用於我的情況,例如
var delay = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: nil, userInfo: nil, repeats: false)
我試圖用這個功能fire
,但也沒有影響。
還有其他的可能性嗎?
斯威夫特3
隨着GCD:
let delayInSeconds = 4.0
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delayInSeconds) {
// here code perfomed with delay
}
或定時器:
func myPerformeCode() {
// here code to perform
}
let myTimer : Timer = Timer.scheduledTimer(timeInterval: 4, target: self, selector: #selector(self.myPerformeCode), userInfo: nil, repeats: false)
夫特2
隨着GCD:
let seconds = 4.0
let delay = seconds * Double(NSEC_PER_SEC) // nanoseconds per seconds
let dispatchTime = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(dispatchTime, dispatch_get_main_queue(), {
// here code perfomed with delay
})
或具有定時器:
func myPerformeCode(timer : NSTimer) {
// here code to perform
}
let myTimer : NSTimer = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: Selector("myPerformeCode:"), userInfo: nil, repeats: false)
這是一個很好的解決方案,無需任何額外的方法。我沒有考慮使用參數到我的主要方法,謝謝! – Dandy
想要upvote,只有發現我已經在過去:) –
如何使用Grand Central Dispatch?
Valfer展示瞭如何
在迅速,我們可以通過使用Dispatch_after.
SWIFT 3.0延遲: -
DispatchQueue.main.asyncAfter(deadline: .now()+4.0) {
alert.dismiss(animated: true, completion: nil)
}
你顯然不明白NSTimer在做什麼。你需要有一個選擇器,並且在定時器觸發時你想運行的方法中有一些代碼。沒有選擇器的計時器不會做任何事情。 – rdelmar
這個答案就是你要找的http://stackoverflow.com/a/24318861/3810673 – Ian
非常感謝你!我不明白選擇器,因爲我不明白爲什麼它應該在撇號中。我把我的功能放在那裏,而且工作很棒。 – Dandy