一尘不染

iOS中块(Objective-C)和闭包(Swift)之间的区别

swift

在教程中,他们写到在功能上是相同的,即使闭包比阻塞更容易,并且避免了块和内存管理的复杂性,我看过很多教程,但是除了这些,我没有理解swift的“
closure”和Objective-C“块”。


阅读 479

收藏
2020-07-07

共1个答案

一尘不染

摘录自:Apple Inc.“将Swift与Cocoa和Objective-C结合使用。” iBooks:

“ Swift闭包和Objective-C块是兼容的,因此您可以将Swift闭包传递给需要块的Objective-
C方法。Swift闭包和函数具有相同的类型,因此您甚至可以传递Swift函数的名称。

闭包与块具有相似的捕获语义,但是在一个关键方面有所不同:变量是可变的,而不是复制的。换句话说,Objective-
C中__block的行为是Swift中变量的默认行为。”

2020-07-07