块是不是也像完成处理程序那样使用回调功能? (斯威夫特/IOS)
Posted
技术标签:
【中文标题】块是不是也像完成处理程序那样使用回调功能? (斯威夫特/IOS)【英文标题】:Does blocks also use call back functiality as the complition handler does? (Swift/IOS)块是否也像完成处理程序那样使用回调功能? (斯威夫特/IOS) 【发布时间】:2018-08-25 08:37:38 【问题描述】:有questions与这个类似,我了解到,使用回调函数的完成处理程序,块只是匿名函数或闭包
block 和 completion 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 的答案是肯定的,那么重新发明***的原因是什么,为什么不把它们都称为块或完成处理程序
【问题讨论】:
【参考方案1】:您在谈论实际上具有相同含义的术语。因此,您的 3 个问题不能单独回答。
completion handler 和 callback 都是(转义)closure 的同义词——它是 block.@escaping
表示在封闭函数返回后稍后调用闭包。
typealias
只是一个方便的标识符,用于将更复杂的右侧替换为更简单的左侧。它与闭包没有直接关系。
【讨论】:
以上是关于块是不是也像完成处理程序那样使用回调功能? (斯威夫特/IOS)的主要内容,如果未能解决你的问题,请参考以下文章