Unowned 需要输入数组吗?

Unowned necessary for type in array?

在下面的代码中,如果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 有一个 category 引用 myCategory:

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