János János - 3 months ago 20
iOS Question

How to add object to an NSPointerArray?

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)

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())