我使用NSHashTable来存储对象的弱引用。当散列表中的对象被释放并且引用在散列表中归零时,指向nil的指针仍然驻留在散列表中,对吗?所以随着时间的推移,如果没有直接从哈希表中删除被解除分配的对象,哈希表的大小会继续增长吗?现在,没有简单的方法向控制哈希表的对象发送通知,其中一个哈希表元素已被删除(这是一个游戏,其中反馈调用意味着对象之间的通信非常间接,并且最好保持这种方式) 。我应该定期迭代哈希表以删除无引用吗?
答案 0 :(得分:7)
这个问题是几个月前发布的,但是为了记录,NSHashTable 确实删除已发布的弱引用。所以要回答实际问题,不,你不需要定期迭代哈希表。
答案 1 :(得分:1)
我会创建一个管理器类,负责添加和删除您正在谈论的对象。因此,我将通过以下几种方式之一通知哈希表:
这完全取决于你是如何将这些对象绑定在一起的,以及哪种模型适合最实际的设计。