为什么retainCount返回-1

时间:2012-02-14 07:40:11

标签: iphone objective-c memory-management ios4 retaincount

据我所知,如果一个对象的保留计数变为0,则会调用dealloc。但是我将保留计数设置为-1。这是什么意思?

我正在使用以下代码 -

    Demo *obj1 = [[Demo alloc] init];
    NSString *s = [[NSString alloc] initWithString:@"mithilesh"];
    NSString *s1 = [NSString stringWithString:s];
    [s release];
    object_setInstanceVariable(obj1, [propertyName cString], s1);
    //printing retain count 
    NSLog(@"retain count of name = %i",[obj1.name retainCount]);

输出:

   retain count of name = -1

获取发布时方法 stringWithString:返回的字符串?

1 个答案:

答案 0 :(得分:11)

这意味着您需要停止致电-retainCount。它纯粹是一个调试功能,除非你是一名从事系统框架或编译工作的Apple工程师,否则你可能没有任何关于该功能的业务。

那就是说,你在这里看到的是INT_MAX被解释为签名号码。听起来你有一个恒定的字符串,可能是@"mithilesh"。常量字符串是不参与-retain-release的单例,-retainCount的{​​{1}}表示这一点。但这只是猜测,你应该停止看INT_MAX

如果你不相信我,也许你会相信Bill Bumgarner说retainCount is useless时。