ES6
我收到此错误:
感谢百万!使用未解析的标识符' self'
答案 0 :(得分:1)
选择器静态标识函数。你不能从论证中选出一个选择器。
也许这样的事情会更好:
func sleep(time: Double, closure: @escaping (Timer) -> (Void) ) {
_ = Timer.scheduledTimer(withTimeInterval: time, repeats: false) { timer in
closure(timer)
}
}
答案 1 :(得分:0)
关于您的错误,此功能可能超出了self
为unresolved identifier
的类。函数应该在类体内。
接下来的一点是你以错误的方式制作选择器。选择器将是在同一类中定义的方法。
另一点是你在下一行是invalidating
计时器,所以它永远不会执行。
如果您的应用支持iOS Version >= 10.0
。
func sleep(time: Double, closure: @escaping (Timer) -> (Void) ) {
Timer.scheduledTimer(withTimeInterval: time, repeats: false) { (timer) in
closure(timer)
}
}
如果您的应用支持iOS Version < 10.0
在你的课堂上制作一些属性:
typealias TimerCallBack = (_ timer: Timer) -> Void
var timer: Timer!
var callBack: TimerCallBack!
然后
func sleep(time: Double, closure: @escaping TimerCallBack) {
self.callBack = closure
self.timer = Timer.scheduledTimer(timeInterval: time, target: self, selector: #selector(timerFired(_:)), userInfo: nil, repeats: false)
}
@objc func timerFired(_ timer: Timer) {
if callBack != nil {
callBack(self.timer)
}
}