在教程中,他们写到在功能上是相同的,即使闭包比阻塞更容易,并且避免了块和内存管理的复杂性,我看过很多教程,但是除了这些,我没有理解swift的“ closure”和Objective-C“块”。
摘录自:Apple Inc.“将Swift与Cocoa和Objective-C结合使用。” iBooks:
“ Swift闭包和Objective-C块是兼容的,因此您可以将Swift闭包传递给需要块的Objective- C方法。Swift闭包和函数具有相同的类型,因此您甚至可以传递Swift函数的名称。 闭包与块具有相似的捕获语义,但是在一个关键方面有所不同:变量是可变的,而不是复制的。换句话说,Objective- C中__block的行为是Swift中变量的默认行为。”
“ Swift闭包和Objective-C块是兼容的,因此您可以将Swift闭包传递给需要块的Objective- C方法。Swift闭包和函数具有相同的类型,因此您甚至可以传递Swift函数的名称。
闭包与块具有相似的捕获语义,但是在一个关键方面有所不同:变量是可变的,而不是复制的。换句话说,Objective- C中__block的行为是Swift中变量的默认行为。”