深入理解 Swift 中闭包的捕捉语义(一)
即使是有 ARC 的今天,理解内存管理和对象的生命周期仍旧是非常重要的。当使用闭包的时候是一个特例,它在 Swift 中出现的场景越来越多,比起 Objective 的代码块的捕获规则有很多不同的捕获语法。让我们看看它们是如果工作的吧。
概述
在 Swift 中,闭包捕获了他们引用到的变量: 默认情况下,在闭包外申明的变量会被使用这些变量的闭包在内部保留,为了确保他们在闭包被执行的时候仍旧存在。
对于这篇文章的来说,让我们定义一个简单的 Pokemon 类,举个例子:
class Pokemon: CustomDebugStringConvertible {
let name: String
init(name: String) {
self.name = name