0

私はObjectiveCを初めて使用し、3つのオブジェクトを含むNSMutableArrayを持っているので、配列のretainCountを出力しようとします。最終的なretainCountが-1を返すのはなぜですか?ありがとう

NSLog(@"myArray has retain count of %d", [myArray retainCount]);    
[myArray release];
NSLog(@"myArray has retain count of %d", [myArray retainCount]);

コンソールからの結果:

2010-10-17 11:58:06.407 TestRetainCount [527:a0f] myArray has retain count of 1
2010-10-17 11:58:06.407 TestRetainCount [527:a0f] myArray has retain count of -1
4

3 に答える 3

3

オブジェクトの割り当てが解除された後 (リリース後に発生する可能性があります)、そのデータが無傷であることを信頼できなくなります。無効になった後、保持カウントを信頼しようとしています。

一般的な注意として、retain カウントは使用しないでください。これまで。メモリ管理プログラミング ガイドのルールを使用すると、常に正しい参照カウントが得られます。

于 2010-10-17T04:45:05.330 に答える
1

グラハム・リーはあなたの例に特有の質問に答えました。

あなたの例に固有ではなく、あなたの質問(主題)に固有です:

UINT_MAX多くの場合、参照カウントを使用しないオブジェクト(たとえば、シングルトンなど、割り当てが解除されることはない)、またはカスタム参照カウントの実装を示すために使用されます。

于 2010-11-01T10:14:25.020 に答える
-1

タイミングが自動解放されたオブジェクトのため、正確なretainCountに頼ることはできません。そうは言っても、alloc/init、new、retainなどを数えて、対応するリリースと一致させてください。

于 2010-10-17T04:48:24.667 に答える