NSHashTable 计数错误地报告非空

NSHashTable count incorrectly reports non-empty

我正在使用弱对象 NSHashTable,它报告计数为 1,即使它是空的。以下是显示我的案例的 lldb 输出。

p [__operationWaitList count]
(NSUInteger)  = 1

p [__operationWaitList.allObjects count]
(NSUInteger)  = 0

我最好的猜测是 count 计算 NSHashTable 中存储的弱引用的数量而不是有效对象的数量。但是,通过调用 allObjects,我取消了指针的引用,这表明没有有效的对象,因此生成的对象数组是空的。

我想确认这一点,因为在这一点上文档有点缺乏。

实验结果,非详尽测试,建议:

  • 您的观察是正确的,count returns 哈希中当前的引用数 table 其中一些可能为空。

  • 此外,正如您所观察到的 allObjects.count 总是 returns 非空引用的数量。

  • 添加新的不同对象似乎是为了清除空引用。

关于这个问题的文档不明确。

建议您向 Apple 提交错误报告,他们应该修复实现或文档。