gpt4 book ai didi

swift - 值类型的引用循环?

转载 作者:搜寻专家 更新时间:2023-11-01 05:36:02 25 4
gpt4 key购买 nike

Swift 中的引用循环发生在引用类型的属性彼此拥有强所有权(或使用闭包)时。

但是,是否有可能具有值类型的引用循环?


我在 playground 上试过这个但没有成功(错误:不允许递归值类型“A”)。

struct A {
var otherA: A? = nil
init() {
otherA = A()
}
}

最佳答案

引用循环(或保留循环)之所以如此命名是因为它表示一个cycle。在object graph :

retain cycle

每个箭头表示一个对象retaining另一个(强引用)。除非循环被打破,否则这些对象的内存将永远不会被释放。

当捕获和存储值类型(结构和枚举)时,没有引用这样的东西。值被复制,而不是被引用,尽管值可以包含对对象的引用。

换句话说,值在对象图中可以有传出箭头,但没有传入箭头。这意味着他们无法参与循环。

关于swift - 值类型的引用循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39681174/

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