块是否也像编译处理程序那样使用回调功能?(Swift/IOS)



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

块和完成处理程序的示例

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

问题2

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

问题3

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

您谈论的术语实际上意味着同样的事情。因此,您的3个问题不能单独回答。

完成处理程序回调都是(转义(闭包的同义词——这是的 Swift 名称。
@escaping指示闭包稍后在封闭函数返回后调用。

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

最新更新