gpt4 book ai didi

Swift3版本的performSelector和cancelPreviousPerformRequestWithTarget

转载 作者:行者123 更新时间:2023-11-28 12:27:22 26 4
gpt4 key购买 nike

我正在尝试在 swift 3.0 中使用一些延迟(0.2 毫秒)调用一个方法,我想要的是第一次调用延迟的方法,当再次调用相同的方法时它应该取消以前的调用如果已经在 0.2 秒内被调用。我可以看到 objective-c 有 performSelector 和 cancelPreviousPerformRequestWithTarget 但我找不到 Swift 3.0 的任何相同示例,任何人都可以帮忙。

最佳答案

您的类必须是 NSObject 的子类才能获得这些方法。

    class MyClass: NSObject {

func performAction(afterDelay delay: TimeInterval) {
perform(#selector(MyClass.action), with: self, afterDelay: delay)
}

func action(sender: Any?) {
print("action called")
}

func cancel() {
NSObject.cancelPreviousPerformRequests(withTarget: self, selector: #selector(MyClass.action), object: self)
}
}

但是,如果您只是需要在一些延迟后执行某些操作,则可以检查 GCD 方法。

DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) { 
//you action
}

关于Swift3版本的performSelector和cancelPreviousPerformRequestWithTarget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43004371/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com