1

誰か助けてもらえますか、私はいくつかのコードを持っていて、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);

私が得るもう1つの奇妙なことは、%iに関して、実際にはuintを返すと言っているので、%iを%uに置き換えたところ、retainCountの数値が非常に長くなりました-4294967295

少し混乱しています、何かアイデアはありますか?

前もって感謝します

4

1 に答える 1

11

の結果は-retainCount、抽象化レベルでは価値がありません。これがもう 1 つの理由です。

…しかし、あなたの質問を続けるには:NSUIntegerMax不滅のオブジェクトを示します。

これへの参照は、いくつかのドキュメントで見つけることができます。

このメソッドをクラスでオーバーライドして、独自の参照カウント スキームを実装することができます。解放されない (つまり、解放メソッドが何もしない) オブジェクトの場合、このメソッドは で定義されているように UINT_MAX を返す必要があり<limits.h>ます。

于 2012-08-25T04:54:26.110 に答える