2012-02-14 11 views
0

私が知っている限り、オブジェクトの保持カウントが0になると、そのdeallocが呼び出されます。しかし、-1として保持カウントを取得しています。どういう意味ですか?方法stringWithStringによって返さなぜretainCountが-1を返すのですか?

retain count of name = -1 

文字列:: GETリリース

私は、次のコード -

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]); 

出力を使用していますか?

+2

あなたは何をしようとしていますか:/ –

+1

[なぜNSNumberが間違ってカウントするのですか?](http://stackoverflow.com/questions/8340050/why-does-nsnumber-wrong -count-a-retaincount) –

答えて

11

これは、-retainCountの呼び出しを停止する必要があることを意味します。これは純粋にデバッグ機能であり、システムフレームワークやコンパイラを扱うAppleのエンジニアでない限り、おそらくその機能を見ているビジネスはありません。

つまり、ここに表示されているのは、INT_MAXが符号付き数値として解釈されるということです。あなたは一定の文字列を持っているようですが、おそらく@"mithilesh"です。定数文字列は、-retainおよび-releaseに参加しないシングルトンであり、-retainCountINT_MAXです。しかし、これは本当に投機的なものなので、あなたは-retainCountの見方を止めるべきです。

あなたが私を信じていないなら、おそらく、あなたがretainCount is uselessと言うとき、Bill Bumgarnerを信じるでしょう。

関連する問題