【发布时间】:2017-01-21 07:39:42
【问题描述】:
我是 swift 3.0 的新手,我在一个小代码 sn-p 中遇到问题,当我按照附加的屏幕截图将 @escaping 闭包分配给 nil 时,它会抛出错误:
func delay(_ time:TimeInterval, closure: @escaping ()-> ()) -> dispatch_cancelable_closure?
{
func dispatch_later(_ clsr:@escaping ()->Void) {
DispatchQueue.main.asyncAfter(
deadline: DispatchTime.now() + Double(Int64(time * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: clsr)
}
var closure : ()->()? = closure
var cancelableClosure:dispatch_cancelable_closure?
let delayedClosure:dispatch_cancelable_closure = { cancel in
if closure != nil {
if (cancel == false) {
DispatchQueue.main.async(execute: closure as! @convention(block) () -> Void);
}
}
closure = nil
cancelableClosure = nil
}
cancelableClosure = delayedClosure
dispatch_later {
if let delayedClosure = cancelableClosure {
delayedClosure(false)
}
}
return cancelableClosure;
}
谁能帮我解决这个问题。
提前致谢。
【问题讨论】:
-
邮政编码不是截图。