gpt4 book ai didi

ios - 持有无主引用的对象何时被释放?

转载 作者:搜寻专家 更新时间:2023-11-01 06:49:20 26 4
gpt4 key购买 nike

我在玩无主引用。正如我从 WWDC 视频中了解到的那样,无主引用不能为 nil,并且它们不会增加它们引用的任何对象的保留计数。我认为如果一个无主引用被释放,那么持有无主引用的对象也会被释放。

考虑以下代码:

class Parent {
var child : Child?

func foo() {
println("Hello")
}
}

class Child {
unowned let parent : Parent

init(parent: Parent) {
self.parent = parent
}
}

var parent : Parent? = Parent()
parent!.child = Child(parent: parent!)

weak var child = parent!.child

parent = nil

child!.parent.foo()

这段代码有效!为什么 child 存在,而且,为什么 parent 明明还存在?我原以为设置parent = nil后,child也会是nil。似乎无主引用就像是强引用一样。

关于此代码为何有效的任何想法?

最佳答案

您的代码很可能只能在 playground 中运行,那里的内存管理有点……模糊。

当我在 Xcode 中运行它时,它会像您预期的那样崩溃。 playground 旨在让测试语法、玩一些类等变得容易。它不是玩弱/未保留变量的最佳场所。

我还没有找到任何文档来源来描述内存在 playground 中的管理方式,但它肯定与实际运行时的方式不同。

关于ios - 持有无主引用的对象何时被释放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24129472/

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