【问题标题】:Does blocks also use call back functiality as the complition handler does? (Swift/IOS)块是否也像完成处理程序那样使用回调功能? (斯威夫特/IOS)
【发布时间】:2018-08-25 08:37:38
【问题描述】:

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

问题2

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

问题3

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

【问题讨论】:

    标签: ios swift closures block completionhandler


    【解决方案1】:

    您在谈论实际上具有相同含义的术语。因此,您的 3 个问题不能单独回答。

    completion handlercallback 都是(转义)closure 的同义词——它是 block.
    @escaping 表示在封闭函数返回后稍后调用闭包。

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

    【讨论】:

      猜你喜欢
      • 2016-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      相关资源
      最近更新 更多