哈希表中的ARC弱引用

use*_*691 3 memory-management hashtable objective-c automatic-ref-counting

我使用NSHashTable来存储对象的弱引用.当散列表中的对象被释放并且引用在散列表中归零时,指向nil的指针仍然驻留在散列表中,对吗?所以随着时间的推移,如果没有直接从哈希表中删除被解除分配的对象,哈希表的大小会继续增长吗?现在,没有简单的方法向控制哈希表的对象发送通知,其中一个哈希表元素已被删除(这是一个游戏,其中反馈调用意味着对象之间的通信非常间接,并且最好保持这种方式) .我应该定期迭代哈希表以删除nil引用吗?

Joh*_*pia 7

这个问题是几个月前发布的,但是为了记录,NSHashTable 确实删除了已发布的弱引用.所以要回答实际问题,不,你不需要定期迭代哈希表.

  • 注意:当弱引用消失时,NSHashTable.count不会更新.如果要检测空的NSHashTable,请使用(NSHashTable.anyObject == nil). (8认同)