Swift PerformSelector:withObject:afterDelay:不可用 [英] Swift performSelector:withObject:afterDelay: is unavailable
本文介绍了Swift PerformSelector:withObject:afterDelay:不可用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在Objective C中有一个正在过渡到Swift的应用程序.在目标C中,我有以下方法:
I have an app in Objective C that I'm transitioning to Swift. In Objective C, I have this method:
[self.view performSelector:@selector(someSelector) withObject:self afterDelay:0.1f];
我正在使用Swift,但我不知道如何做到这一点.我尝试过:
I'm working with Swift and I can't figure out how to do this. I've tried:
self.view.performSelector(Selector("someSelector"), withObject: self, afterDelay: 0.1)
这是我得到的错误:'performSelector' is unavailable: 'performSelector' methods are unavailable
我将使用什么调用来调用方法afterDelay
?
What call would I use to call a method afterDelay
?
更新
这就是我最终得到的:
extension NSObject {
func callSelectorAsync(selector: Selector, object: AnyObject?, delay: NSTimeInterval) -> NSTimer {
let timer = NSTimer.scheduledTimerWithTimeInterval(delay, target: self, selector: selector, userInfo: object, repeats: false)
return timer
}
func callSelector(selector: Selector, object: AnyObject?, delay: NSTimeInterval) {
let delay = delay * Double(NSEC_PER_SEC)
let time = dispatch_time(DISPATCH_TIME_NOW, Int64(delay))
dispatch_after(time, dispatch_get_main_queue(), {
NSThread.detachNewThreadSelector(selector, toTarget:self, withObject: object)
})
}
}
推荐答案
Swift 4
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
// your function here
}
快捷键3
DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(0.1)) {
// your function here
}
快捷键2
let dispatchTime: dispatch_time_t = dispatch_time(DISPATCH_TIME_NOW, Int64(0.1 * Double(NSEC_PER_SEC)))
dispatch_after(dispatchTime, dispatch_get_main_queue(), {
// your function here
})
这篇关于Swift PerformSelector:withObject:afterDelay:不可用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文