我一直在使用NSHashTable来存储对象的弱引用。当哈希表中的对象被释放并且在哈希表中的引用被清零时,指向nil的指针仍然存在于哈希表中,是吗?因此,如果已释放的对象未直接从哈希表中删除,则随着时间的推移,哈希表的大小将继续增长?目前,没有简单的方法向控制哈希表的对象发送通知,说明其中一个哈希表元素已被删除(这是一个游戏,其中反馈调用意味着对象之间的通信非常间接,最好保持这种方式)。我应该定期遍历哈希表以删除nil引用吗?
这个问题几个月前就已经发布了,但是为了记录,NSHashTable确实会删除已释放的弱引用。所以回答实际问题,不,你不需要定期迭代哈希表。