块是否也像补全处理程序一样使用回调函数? (Swift / IOS)

时间:2018-08-25 08:37:38

标签: ios swift closures block completionhandler

questions与此类似,我了解到,使用回调函数的完成处理程序,块只是匿名函数或闭包

blockcompletion handler

的示例
class func scheduledTimer(withTimeInterval interval: TimeInterval, 
                  repeats: Bool, 
                    block: @escaping (Timer) -> Void) -> Timer


func startUpdates(from start: Date, 
      withHandler handler: @escaping CMPedometerHandler)

问题1

我注意到另一个区别是完成处理程序具有类型的类型别名,这是否适用于所有ios框架设计?

typealias CMPedometerHandler = (CMPedometerData?, Error?) -> Void

Question2

块也使用回调功能吗?块还具有转义关键字,这意味着将在外部函数返回后调用闭包,这对我来说听起来很“回调”。

问题3

如果问题2的答案是肯定的,那么重新发明轮子的原因是什么,为什么不将它们称为所有块或完成处理程序

1 个答案:

答案 0 :(得分:1)

您所谈论的术语实际上是同一意思。因此,您的3个问题无法单独回答。

补全处理程序回调都是(转义)闭包的同义词,这是 block < / em>。
@escaping指示在封闭函数返回之后稍后调用该封闭。

typealias只是一个便利标识符,用于将较复杂的右侧替换为较简单的左侧。它与闭包没有直接关系。