作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想在 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 implynoescape
as well, except when passed the optional attributeescaping
.
所以应该这样做:
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/
我是一名优秀的程序员,十分优秀!