迅速关闭

大多数现代语言都有闭包,或者它们可以称为匿名函数。 在Swift中,我们将它们视为闭包,并且在整个使用过程中,它们大量用于回调。

先决条件:

  • 功能
  • 种类

动机

我们可以按照Apple的解释逐步进行:“ …可以传递并在您的代码中使用的自包含功能块”。 在Swift中,关闭是非常基本的构建基块,需要认真对待。

自包含的功能块

这意味着我们可以使用闭包来编写执行特定任务的代码。

可以在您的代码中传递和使用

我们可以传递这些闭包,存储它们,将参数传递给函数,并像对待Swift中的任何其他对象一样对待它们。 在Swift中将闭包作为完成处理程序传递,并将其用于事件处理和回调是很常见的。

基本关闭

将其分配给变量

我们采用我们认为是函数的方式,并将其分配给变量。

此生命周期意味着执行mathForOneAndTwo之后,内存为

转义闭包-在将传递给函数的函数重传并超过其传递给函数的寿命之后调用的闭包。 对于分派队列上的异步调用,回调或调度任务很有用。

因此,在我们的示例中(为了使转义的闭包有意义-无需使用网络调用),我将闭包包装在asyncAfter()中,以便在两秒钟的延迟后执行。

编译器要求将@escaping添加到mathForOneAndTwo中(感谢Swift!)

仅在关闭完成执行后才释放内存。

自动关闭

您可以将传递给函数的代码强制为闭包。 尽管这会使代码更难以理解。

例如,我们可以传递以下操作,该操作是一个输出两个数字之和的函数:

可以在这里用自动关闭功能代替

顺便说一句,fatalError也使用自动关闭,可以通过查看XCode中fatalError的类型签名来进行验证。

资源资源

https://docs.swift.org/swift-book/LanguageGuide/Closures.html