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