我需要一个弱的NSHashTable对象,如果一个对象变为nil,我希望NSHashTable自动从列表中删除该对象。
以下是代码:
import Foundation
class Router: NSObject {
let listeners: NSHashTable<Listener> = NSHashTable.weakObjects()
}
class Listener: NSObject {
}
let router = Router()
var listener1: Listener? = Listener()
router.listeners.add(listener1)
print("before", router.listeners.count)
listener1 = nil
print("after", router.listeners.count)
日志是:
before 1
after 1
有可能我不理解弱引用的散列表的主要用途吗?我想这样做的原因是,如果对象丢失了所有强引用,那么也会从哈希表中删除。