我被问到Objective C块是否更像是闭包或回调。但是,回调的定义看起来几乎与闭包相同,至少在这个例子中借用了http://swiftspace.org/callback-function-in-swift/:
func mainFunction(callback: () -> Void) {
// some code
callback() // call the callback function
}
在编程语言指南(Swift 2.2)中,很少提及回调,这一个值得注意的例外是回调听起来像一种闭包:
“当一个闭包的类型已经知道时,例如a的回调 委托,您可以省略其参数的类型,返回类型或 二者“。
帮助?
答案 0 :(得分:2)
它们是两个完全不同但虽然兼容的概念。回调是附加函数的钩子,因此当需要动作时,可以调用函数来提供结果或影响。闭包是一种捕获局部变量的函数,这些局部变量在本地范围之外的范围内使用。闭包可以是回调,就像任何其他函数可以作为回调一样,但它不仅限于使用。
在你的引用中,他们正在讨论如何使用闭包进行回调。在这种情况下,编译器可以从上下文中推断出函数签名(参数类型和返回)。
请注意,这与Objective-C块几乎没有关系。 Swift和Objective-C是两种完全不同的语言,块和闭包是类似概念的两种不同实现。