我正在使用一个弱对象 NSHashTable,它报告计数为 1,即使它是空的。以下是显示我的案例的 lldb 输出。
p [__operationWaitList count]
(NSUInteger) $4 = 1
p [__operationWaitList.allObjects count]
(NSUInteger) $7 = 0
我最好的猜测是 count
计算存储在 NSHashTable 中的弱引用的数量,而不是有效对象的数量。但是,通过调用 allObjects,我取消了指针的引用,这表明没有有效的对象,因此生成的对象数组是空的。
我想确认这一点,因为在这一点上文档有点缺乏。
最佳答案
实验结果,非详尽测试,建议:
您的观察是正确的,
count
返回哈希表中当前的引用数,其中一些可能为空。正如您观察到的,
allObjects.count
总是返回非空引用的数量。添加新的不同对象似乎可以清除空引用。
关于这个问题的文档不明确。
建议您向 Apple 提交错误报告,他们应该修复实现或文档。
关于ios - NSHashTable 计数错误地报告非空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29880121/