【问题标题】:Is it possible to have an object with retain count -1?是否可以有一个保留计数为-1的对象?
【发布时间】:2013-11-18 22:12:24
【问题描述】:

我正在完善我关于内存管理的项目。

我已经在 dealloc 方法中记录了我所有的保留计数,并且我遇到了它。

有可能吗?

2013-11-07 11:56:03.974 Project[2749:16403] unitId : -1
2013-11-07 11:56:04.231 Project[2749:16403] specId : -1
2013-11-07 11:56:04.566 Project[2749:16403] brickId : -1
2013-11-07 11:56:45.788 Project[2749:16403] brickRow : 0

【问题讨论】:

  • 根据您的代码。可能不是你想要的
  • 也许是,也许不是,但谁在乎,因为 ARC 存在!但是,如果您想要一个真正的答案,保留计数可能是 2147483647 (NSIntegerMax),并且您得到 -1,因为您使用 %i 打印了该值(尝试使用 %u 打印)。当保留计数为 NSIntegerMax 时,表示该对象是不朽的。另外,whentouseretaincount.com
  • 记住 retainCountNSUInteger 又名 unsigned long

标签: ios memory-management retaincount


【解决方案1】:

保留计数是无符号的。如果将最大 unsigned long 值记录为有符号数,它将显示为 -1。您的日志记录不正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多