在Swift 1.2中,函数中的闭包参数有了一个新属性,正如文档所述:
这表明该参数仅被调用(或在调用中作为@noescape参数传递),这意味着它不能超出调用的生命周期。
在我看来,在此之前,我们可以使用
如果我理解正确,那么为什么要使用
这表明该参数仅被调用(或在调用中作为@noescape参数传递),这意味着它不能超出调用的生命周期。
在我看来,在此之前,我们可以使用
[weak self]
来防止闭包对其类产生强引用,而此时闭包被执行时self可能为空或是实例。但现在,@noescape
表示如果类被析构,闭包将永远不会被执行。我理解得对吗?如果我理解正确,那么为什么要使用
@noescape
闭包而不是常规函数,它们的行为非常相似?
@noescape
保证闭包不会被异步使用"。这意味着你不能将其与触发异步操作的网络代码一起使用。 - David James