创建一个通用包装,如下所示:
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语言不允许这样定义的扩展.