gpt4 book ai didi

Swift 可选的转义闭包

转载 作者:IT王子 更新时间:2023-10-29 05:39:12 24 4
gpt4 key购买 nike

enter image description here

编译器错误 Closure use of non-escaping parameter 'completion' may allow it to escape,这是有道理的,因为它将在函数返回后调用。

func sync(completion:(()->())) {
self.remoteConfig.fetch(withExpirationDuration: TimeInterval(expirationDuration)) { (status, error) -> Void in
completion()
}
}

但是如果我将闭包设为可选则不会出现编译器错误,这是为什么呢?函数返回后仍然可以调用闭包。

func sync(completion:(()->())?) {
self.remoteConfig.fetch(withExpirationDuration: TimeInterval(expirationDuration)) { (status, error) -> Void in
completion?()
}
}

最佳答案

将闭包包装在 Optional 中会自动将其标记为转义。它在技术上已经通过嵌入枚举(Optional)来“转义”。

关于Swift 可选的转义闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47417920/

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