Неизвестный необходимый для типа в массиве? - PullRequest
0 голосов
/ 06 декабря 2018

В следующем коде необходимо ли иметь unowned, если массив Swift передается по значению?

Категория имеет свойство для массива 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)
    }
}

1 Ответ

0 голосов
/ 06 декабря 2018

Вам все еще нужно unowned или weak.В массивах нет ничего особенного, что мешает им участвовать в циклах сохранения.

Массивы просто позволяют ссылаться на несколько объектов.myCatgeory.items может иметь один элемент, который является Item с category, который ссылается на myCategory:

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