我想在dispatch_async块内调用@autoclosure参数。

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

我收到以下错误。



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

在Xcode 6.4(6E23)中进行了测试。

最佳答案

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



因此,应该这样做:

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

09-25 18:38