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)
}
}
您还需要 unowned
或 weak
。数组没有什么特别之处可以阻止它们参与保留周期。
数组只允许您引用多个对象。 myCatgeory.items
可以有一个元素,即一个 Item
有一个 category
引用 myCategory
:
let myCategory = Category()
let item = Item(value: 0, category: myCategory)
myCategory.items = [item]
// retain cycle!
在下面的代码中,如果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)
}
}
您还需要 unowned
或 weak
。数组没有什么特别之处可以阻止它们参与保留周期。
数组只允许您引用多个对象。 myCatgeory.items
可以有一个元素,即一个 Item
有一个 category
引用 myCategory
:
let myCategory = Category()
let item = Item(value: 0, category: myCategory)
myCategory.items = [item]
// retain cycle!