Dan*_*ndy 30 nstimer ios swift
我在延迟计算机在游戏中的移动方面遇到了问题.
我找到了一些解决方案,但它们在我的情况下不起作用,例如
var delay = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: nil, userInfo: nil, repeats: false)
Run Code Online (Sandbox Code Playgroud)
我尝试使用它与功能,fire但也没有效果.
还有哪些其他可能性?
val*_*fer 101
斯威夫特3
使用GCD:
let delayInSeconds = 4.0
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delayInSeconds) {
// here code perfomed with delay
}
Run Code Online (Sandbox Code Playgroud)
或者使用计时器:
func myPerformeCode() {
// here code to perform
}
let myTimer : Timer = Timer.scheduledTimer(timeInterval: 4, target: self, selector: #selector(self.myPerformeCode), userInfo: nil, repeats: false)
Run Code Online (Sandbox Code Playgroud)
斯威夫特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
})
Run Code Online (Sandbox Code Playgroud)
或者使用计时器:
func myPerformeCode(timer : NSTimer) {
// here code to perform
}
let myTimer : NSTimer = NSTimer.scheduledTimerWithTimeInterval(4, target: self, selector: Selector("myPerformeCode:"), userInfo: nil, repeats: false)
Run Code Online (Sandbox Code Playgroud)
使用 Swift 4.2
WithTimer你可以避免使用选择器,而是使用闭包:
Timer.scheduledTimer(withTimeInterval: 1.0, repeats: false) { (nil) in
// Your code here
}
Run Code Online (Sandbox Code Playgroud)
请记住,这Timer是免费桥接的CFRunLoopTimer,并且运行循环和 GCD 是两种完全不同的方法....e
| 归档时间: |
|
| 查看次数: |
42298 次 |
| 最近记录: |