gpt4 book ai didi

ios - 如何在 swift 3.0 中返回 void @escaping 闭包?

转载 作者:行者123 更新时间:2023-11-28 15:55:43 25 4
gpt4 key购买 nike

我是 swift 3.0 的新手,我在一个小代码片段中遇到了问题,当我按照所附的屏幕截图将 @escaping 闭包分配给 nil 时会抛出错误:

ScreenShot这是我的代码...

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;
}

谁能帮我解决这个问题。
提前致谢。

最佳答案

似乎您的问题更多的是可选闭包类型而不是 @escaping .

尝试改变这一行:

var closure : ()->()? = closure

到:

var closure : (()->())? = closure

()->()?表示返回 ()? 的非可选闭包(又名 Optional<Void> ),这可能不是您想要的。

关于ios - 如何在 swift 3.0 中返回 void @escaping 闭包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41776906/

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