我正在阅读文档(关于“自动引用计数”章节中的“闭包的强引用循环”),但我似乎无法确定在定义类时应该在闭包中保留对
以下是文档提供的示例:
self
(该类的实例)的强引用的情况。
捕获列表似乎总是避免内存泄漏的最佳解决方案,我真的想不出任何场景需要保持强引用循环。以下是文档提供的示例:
class HTMLElement {
let name: String
let text: String?
// Without Capture List
@lazy var asHTML: () -> String = {
if let text = self.text {
return "<\(self.name)>\(text)</\(self.name)>"
} else {
return "<\(self.name) />"
}
}
init(name: String, text: String? = nil) {
self.name = name
self.text = text
}
deinit {
println("\(name) is being deinitialized")
}
}
class HTMLElement {
let name: String
let text: String?
// With Capture List
@lazy var asHTML: () -> String = {
[unowned self] in
if let text = self.text {
return "<\(self.name)>\(text)</\(self.name)>"
} else {
return "<\(self.name) />"
}
}
init(name: String, text: String? = nil) {
self.name = name
self.text = text
}
deinit {
println("\(name) is being deinitialized")
}
}