0

NSLog を使用して、ターミナル内のオブジェクトの保持カウントを出力しようとしています。これが私のコードです:

NSNumber *myInt=[[NSNumber alloc] initWithInteger: 100];
NSLog(@"myInt retain count=%d",[myInt retainCount]);

結果は 1 になるはずですが、ターミナルで得たのは -1 です。%d の代わりに %u を使用しようとしたところ、結果として 4294967295 が得られました。なぜこれが起こるのか誰か知っていますか?

4

1 に答える 1

3

@bbumがここに来る前に、私はこれを言うことができます:

-retainCountコードに依存しないでください

それはあなたが期待する答えをあなたに与えません。ここでは答え-1が正しいことがわかります。これが正しいとは思わないのは、フレームワークが背後で知らないことを実行しているためです。-retainCount自動参照カウント(ARC)を使用するか、手動の保持/解放を使用する必要がある場合は、この方法を使用せずにメモリ管理ガイドラインに従ってください。

于 2012-07-16T15:33:50.643 に答える