闭包捕获值
2021-09-06 本文已影响0人
一个栗
捕获值
- 一个闭包能够从上下文捕获已被定义的常量和变量。即使定义这些常量和变量的原作用域已经不存在,闭包仍能够在其函数体内引用和修改这些值

- 作为一种优化,如果一个值没有改变或者在闭包的外面,Swift 可能会使用这个值的拷贝而不是捕获。
- Swift 也处理了变量的内存管理操作,当变量不再需要时会被释放。

- 如果你建立了第二个 incremented,它将会有一个新的、独立的 runningTotal 变量的引用。

闭包是引用类型
- 在 Swift 中,函数和闭包都是引用类型。
- 无论你什么时候赋值给一个函数或者闭包给常量或者变量,你实际上都是将常量和变量设置为对函数和闭包的引用。

- 如果你分配了一个闭包给类实例的属性,并且闭包通过引用改实例或者它的成员来捕获实例,你将在闭包和实例之间产生循环引用。