Iphone 为什么重新计算返回值-1

Iphone 为什么重新计算返回值-1,iphone,objective-c,memory-management,ios4,retaincount,Iphone,Objective C,Memory Management,Ios4,Retaincount,正如我所知,若一个对象的retain count变为0,它的dealloc将被调用。但我得到的retain count为-1。这是什么意思 我正在使用以下代码- Demo *obj1 = [[Demo alloc] init]; NSString *s = [[NSString alloc] initWithString:@"mithilesh"]; NSString *s1 = [NSString stringWithString:s]; [s release]

正如我所知,若一个对象的retain count变为0,它的dealloc将被调用。但我得到的retain count为-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:在获得释放时返回的字符串?

这意味着您需要停止调用
-retainCount
。这纯粹是一个调试功能,除非你是一名苹果公司的工程师,从事系统框架或编译器的工作,否则你可能根本不需要查看这个功能

也就是说,您在这里看到的是
INT\u MAX
被解释为一个有符号的数字。听起来你有一个常量字符串,很可能是
@“mithilesh”
。常量字符串是不参与
-retain
-release
的单例,而
-retainCount
-INT\u MAX
表示这一点。但这实际上只是猜测,您应该停止查看
-retainCount


如果你不相信我,也许你会相信比尔·布姆加纳说的话。

你到底想干什么/可能重复的