2

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)
János
  • 32,867
  • 38
  • 193
  • 353

1 Answers1

6

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())
Martin R
  • 529,903
  • 94
  • 1,240
  • 1,382