gpt4 book ai didi

swift - Deinit 方法从未被调用 - Swift Playground

转载 作者:行者123 更新时间:2023-11-30 10:47:33 24 4
gpt4 key购买 nike

在下一个代码中,我尝试调用 deinit 方法来释放对 Person Class 实例 Mark 实例的所有引用,但 deinit 从未被调用。为什么?

class Person{

let name:String

init(name:String){
self.name = name
println("Person created")
}

deinit {

println("Person \(name) deinit")
}
}

var Mark:Person? = Person(name:"Mark")
Mark = nil // Shouldn't the person deinit method be called here? It doesn't.

最佳答案

Xcode 的 Swift 的 Playgrounds 不像常规应用程序那样工作;它们不仅仅运行一次。创建的对象保留在内存中并且可以被检查,直到您更改代码,此时整个 Playground 将被重新评估。发生这种情况时,所有先前的结果都将被丢弃,虽然所有对象都将被释放,但您将看不到任何输出。

您的代码是正确的,但 Playgrounds 不适合测试与内存管理相关的内容。

这是一个相关的问题:Memory leaks in the swift playground / deinit{} not called consistently

关于swift - Deinit 方法从未被调用 - Swift Playground,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55444913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com