ios - 快速执行选择器 :withObject:afterDelay: is unavailab

我有一个 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' 不可用:'performSelector' 方法不可用

我会使用什么调用来调用方法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
}

swift 3

DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(0.1)) {
    // your function here
}

swift 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 
})

关于ios - 快速执行选择器 :withObject:afterDelay: is unavailable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24170282/

相关文章:

objective-c - 从 NSString 中删除所有空格

iphone - 在 iPhone TableView 单元格的单元格右侧添加小箭头

ios - 如何根据文本长度计算 UILabel 宽度?

ios - 如何调整 UIButton 的 imageSize?

ios - 如何截取 UIView 的屏幕截图?

objective-c - 如何将 NSNumber 转换为 NSString

ios - 我可以更改 NSLayoutConstraint 的乘数属性吗?

iphone - 通过保持纵横比和宽度调整 UIImage 的大小

iphone - -ObjC 链接器标志有什么作用?

ios - 获取 UITableViewCell 内的按钮单击