ios - NSHashTable 计数错误地报告非空

标签 ios objective-c macos cocoa nshashtable

我正在使用一个弱对象 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/

相关文章:

linux - 将 Virtualbox 共享文件夹挂载为在 guest 操作系统上运行的 Docker 的卷

ruby - Homebrew 程序(Mac): cannot install libksba or dependency libgpg-error

ios - 在 Xamarin Objective C 绑定(bind)中调用委托(delegate)时出现异常

iphone - 两个 uiwebview 但只有一个有效

c++ - C 和 C++(也可能是 Objective-C)中的 Lint 工具

c - Valgrind macOs 和错误系统调用参数 msg->desc.port.name 指向未初始化的字节

ios - 作为第三方商家在 iOS 上使用 PayPal 账户和信用卡进行 PayPal 支付

ios - GCDAsyncSocket 多连接?

iphone - 将对象设置为NSMutableDictionary之后的SIGABRT

ios - Xcode 试图将 Objective-C 库编译为 Swift