How to add object to an NSPointerArray?

3.4k Views Asked by At

I want to store weak references in an NSPointerArray but I get an error:

public var objectWithReloadFRC = NSPointerArray(options: NSPointerFunctionsWeakMemory)
objectWithReloadFRC.addPointer(self) //self is an UIViewController subclass

enter image description here

tried this too:

objectWithReloadFRC.addPointer(UnsafePointer(self)
1

There are 1 best solutions below

0
On BEST ANSWER

You can get a pointer to the storage used for an object with unsafeAddressOf(). Since addPointer() requires a mutable pointer, another conversion is needed:

objectWithReloadFRC.addPointer(UnsafeMutablePointer(unsafeAddressOf(self)))

Swift 3:

var objectWithReloadFRC = NSPointerArray(options: .weakMemory)
objectWithReloadFRC.addPointer(Unmanaged.passUnretained(self).toOpaque())