【问题标题】:retainCount always is -1?保留计数总是-1?
【发布时间】:2012-08-25 04:48:46
【问题描述】:

谁能帮忙,我有一些代码,我正在检查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

有点迷茫,有什么想法吗?

提前致谢

【问题讨论】:

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


【解决方案1】:

-retainCount 的结果在您的抽象级别上毫无价值,这是另一个原因。

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

您可以在一些文档中找到对此的参考:

你可以在一个类中重写这个方法来实现你自己的 引用计数方案。对于永远不会被释放的对象(即 是,他们的 release 方法什么都不做),这个方法应该返回 UINT_MAX,在<limits.h> 中定义。

【讨论】:

    猜你喜欢
    • 2011-07-29
    • 2020-12-23
    • 1970-01-01
    • 2011-07-06
    • 2011-05-15
    • 2013-11-18
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多