我想在NSPointerArray
中存储弱引用,但是我收到错误:
public var objectWithReloadFRC = NSPointerArray(options: NSPointerFunctionsWeakMemory)
objectWithReloadFRC.addPointer(self) //self is an UIViewController subclass
也尝试了这个:
objectWithReloadFRC.addPointer(UnsafePointer(self)
答案 0 :(得分:6)
您可以获取指向用于对象的存储的指针
unsafeAddressOf()
。由于addPointer()
需要可变指针,
需要进行另一次转换:
objectWithReloadFRC.addPointer(UnsafeMutablePointer(unsafeAddressOf(self)))
斯威夫特3:
var objectWithReloadFRC = NSPointerArray(options: .weakMemory)
objectWithReloadFRC.addPointer(Unmanaged.passUnretained(self).toOpaque())
答案 1 :(得分:-1)
在进入只会让您头疼的区域之前,只需创建一个包含对象弱引用的包装类,然后将包装类的实例添加到普通数组中,NSPointerArray在Objective-中已经足够糟糕了C,在斯威夫特,这是一场噩梦。它无论如何都不处理弱引用,只是不安全的未保留。这意味着如果对象消失,它将不会设置为nil,它将在您检索它时崩溃。