NSHashTable计数错误报告非空

gre*_*reg 4 macos cocoa objective-c ios nshashtable

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

p [__operationWaitList count]
(NSUInteger) $4 = 1

p [__operationWaitList.allObjects count]
(NSUInteger) $7 = 0
Run Code Online (Sandbox Code Playgroud)

我最好的猜测是count计算存储在NSHashTable中的弱引用的数量,而不是有效对象的数量.通过调用allObjects然而,我正在取消引用没有有效对象的指针,因此生成的对象数组为空.

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

CRD*_*CRD 6

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

  • 您的观察是正确的,count返回哈希表中当前引用的数量,其中一些引用可能为空.

  • 此外,您观察到的allObjects.count总是返回非空引用的数量.

  • 添加新的不同对象似乎可以清除空引用.

有关此问题的文档不明确.

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