我需要一个弱引用的对象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
我是否理解弱引用哈希表的主要目的?我的理解是,当对象失去所有强引用时,也会从哈希表中删除。这样做的原因是什么呢?