swift 关闭保留周期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift 关闭保留周期相关的知识,希望对你有一定的参考价值。

class HTMLElement {
    let name: String
    let text: String
    
    // 參考self的closure造成 記憶體無法釋放的retain cycle
    lazy var asHTML: () -> String = {
        return "<\(self.name)>\(self.text)</\(self.name)>"
    }

    init(name: String, text: String) {
        self.name = name
        self.text = text
    }
    
    deinit {
         print("HTMLElement \(name) is bring deallocated")
    }
}
var paragraph: HTMLElement? = HTMLElement(name: "p", text: "some smaple paragraph body text")

paragraph?.asHTML()
paragraph = nil // 因為retain cycle 而無法釋放所以不會執行 deinit

以上是关于swift 关闭保留周期的主要内容,如果未能解决你的问题,请参考以下文章

Swift之深入解析Xcode13对Swift对象生命周期的优化

iOS ViewController 生命周期最佳实践 [关闭]

使用 Swift 关闭 SFSafariViewController 时是不是可以编辑动画?

UINavigationController上的swift菜单项在打开segue时消失[关闭]

在swift中将逗号添加到字符串整数[关闭]

Swift 类型推断需要问号或感叹号