dispatch_async(queue,block)vs dispatch_async(queue){block}

时间:2016-10-06 11:03:48

标签: swift2

这两个片段之间有什么区别吗?在第一个中,块位于dispatch部分内。 Tks

            dispatch_async(dispatch_get_main_queue(),{
                //do something
            })

            dispatch_async(dispatch_get_main_queue()){
                //do something
            }

1 个答案:

答案 0 :(得分:1)

不,这两个街区之间没有区别。

这是Swift在函数括号后接受作为参数提供的闭包的能力的一部分。

注意:这个答案及其示例是用Swift 3编写的,但Swift 2的语法应该类似。

考虑以下情况:

func a(callback: (_ s: String) -> Void) {
    callback(s: "hello there")
}

此功能可以表示为,与您的代码段类似:

a(callback: { str in
    print(str)    // prints "hello there"
})

a() { str in
    print(str)    // also prints "hello there"
}

在需要闭包的其他函数/方法中可以看到具有类似行为的闭包,例如autoreleasepool,Dispatch和URLConnection。从个人的角度来看,我几乎总是使用第一个例子,因为它更具可读性。