gpt4 book ai didi

swift - 如何在 Swift 的异步 block 中使用@autoclosure 参数?

转载 作者:搜寻专家 更新时间:2023-10-31 08:12:44 24 4
gpt4 key购买 nike

我想在 dispatch_async block 中调用一个@autoclosure 参数。

func myFunc(@autoclosure condition: () -> Bool) {
dispatch_async(dispatch_get_main_queue()) {
if condition() {
println("Condition is true")
}
}
}

我收到以下错误。

Closure use of @noescape parameter may allow it to escape.

是否可以异步调用@autoclosure参数?

在 Xcode 6.4 (6E23) 中测试。

最佳答案

是的,只要你声明它们@autoclosure(escaping):

Declarations with the autoclosure attribute imply noescape as well, except when passed the optional attribute escaping.

所以应该这样做:

func myFunc(@autoclosure(escaping) condition: () -> Bool) {
dispatch_async(dispatch_get_main_queue()) {
if condition() {
println("Condition is true")
}
}
}

关于swift - 如何在 Swift 的异步 block 中使用@autoclosure 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30385467/

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