gpt4 book ai didi

swift - Unowned 需要输入数组吗?

转载 作者:行者123 更新时间:2023-11-28 13:59:47 24 4
gpt4 key购买 nike

在下面的代码中,如果Swift数组是按值传递的,是否必须要有unowned?

Category 有一个 Swift 数组的属性,而不是一个 Item,所以 unowned 不是必需的,对吧?

final class Item: Base {

unowned let category: Category

init(value: Int, category: Category) {
self.category = category
super.init(value: value)
}
}

final class Category: Base {

var items: [Item] = []

}

class Base {

let name: String

var index: Int {
return Int(name)!
}

init(name: String) {
self.name = name
}

init(value: Int) {
self.name = String(value)
}
}

最佳答案

您仍然需要unownedweak。数组没有什么特别之处可以阻止它们参与保留周期。

数组仅允许您引用多个对象。 myCatgeory.items 可以有一个元素,它是一个 Item,它有一个引用 myCategorycategory:

let myCategory = Category()
let item = Item(value: 0, category: myCategory)
myCategory.items = [item]
// retain cycle!

关于swift - Unowned 需要输入数组吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53649025/

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