如何在Swift中声明弱引用数组?
我想在Swift中存储一系列弱引用。数组本身不应该是一个弱引用-它的元素应该是。我认为可可NSPointerArray
对此提供了非类型安全的版本。
回答:
创建通用包装,如下所示:
class Weak<T: AnyObject> { weak var value : T?
init (value: T) {
self.value = value
}
}
将此类的实例添加到您的数组。
class Stuff {}var weakly : [Weak<Stuff>] = [Weak(value: Stuff()), Weak(value: Stuff())]
定义时Weak
,可以使用struct
或class
。
另外,为了帮助获取数组内容,您可以按照以下方式进行操作:
extension Array where Element:Weak<AnyObject> { mutating func reap () {
self = self.filter { nil != $0.value }
}
}
AnyObject
上面的用法应替换为T
-但我不认为当前的Swift语言允许这样定义扩展。
以上是 如何在Swift中声明弱引用数组? 的全部内容, 来源链接: utcz.com/qa/401037.html