I'd like to store an array of weak references in Swift. The array itself should not be a weak reference - its elements should be. I think Cocoa NSPointerArray offers a non-typesafe version of this.
解决方案
Create a generic wrapper as:
class Weak {
weak var value : T?
init (value: T) {
self.value = value
}
}
Add instances of this class to your array.
class Stuff {}
var weakly : [Weak] = [Weak(value: Stuff()), Weak(value: Stuff())]
When defining Weak you can use either struct or class.
Also, to help with reaping array contents, you could do something along the lines of:
extension Array where Element:Weak {
mutating func reap () {
self = self.filter { nil != $0.value }
}
}
The use of AnyObject above should be replaced with T - but I don't think the current Swift language allows an extension defined as such.