我想在dispatch_async
块中调用@autoclosure参数。
func myFunc(@autoclosure condition: () -> Bool) {
dispatch_async(dispatch_get_main_queue()) {
if condition() {
println("Condition is true")
}
}
}
我收到以下错误。
关闭使用@noescape参数可能允许它逃脱。
是否可以异步调用@autoclosure参数?
在Xcode 6.4(6E23)中测试。
答案 0 :(得分:13)
是的,只要您声明@autoclosure(escaping)
:
具有
autoclosure
属性的声明也暗示noescape
,除非传递了可选属性escaping
。
所以这应该这样做:
func myFunc(@autoclosure(escaping) condition: () -> Bool) {
dispatch_async(dispatch_get_main_queue()) {
if condition() {
println("Condition is true")
}
}
}