retainCount总是-1?

时间:2012-08-25 04:48:46

标签: objective-c ios macos foundation reference-counting

任何人都可以提供帮助,我有一些代码,我正在检查retainCount,但它总是-1,至少应该是1?

这是我的代码,我做错了什么?

    NSNumber* n = [[NSNumber alloc] initWithInt:100];

    NSLog(@"Count of   n : %i",[n retainCount]);

    NSNumber* n1 = n;

    NSLog(@"Count of   n : %i",[n retainCount]);
    NSLog(@"Count of   n1: %i",[n1 retainCount]);
    NSLog(@"Address of n : %p", n);
    NSLog(@"Address of n1: %p", n1);

我得到的另一个奇怪的事情是关于%i,说它实际上返回了一个uint,所以我将%i替换为%u,现在我得到了一个非常长的retainCount数字 - 4294967295

有点困惑,有什么想法吗?

提前致谢

1 个答案:

答案 0 :(得分:11)

-retainCount的结果在你的抽象层次上毫无价值,这也是另一个原因。

...但是继续你的问题:NSUIntegerMax表示一个不朽的对象。

您可以在某些文档中找到对此的引用:

  

您可以在类中重写此方法以实现自己的方法   参考计数方案。对于永远不会被释放的物体(那个   是的,他们的发布方法什么都不做),这个方法应该返回   UINT_MAX,如<limits.h>中所定义。