У меня есть приложение на Objective C, которое я перехожу на Swift. В Objective C у меня есть такой метод:
[self.view performSelector:@selector(someSelector) withObject:self afterDelay:0.1f];
Я работаю со Swift и не могу понять, как это сделать. Я пробовал:
self.view.performSelector(Selector("someSelector"), withObject: self, afterDelay: 0.1)
Вот ошибка, которую я получаю: 'performSelector' is unavailable: 'performSelector' methods are unavailable
Какой вызов бы я использовал для вызова метода 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)
})
}
}
afterDelay
- person Cody Winton   schedule 12.06.2014dispatch_after
использует очереди отправки; тогда какperformSelector:afterDelay:
использует текущий цикл выполнения. Они разные. - person user102008   schedule 27.08.2014