Apple のAdvanced Memory Management のドキュメントは非常によく書かれており、正確ですが、次の図が含まれているのではないかと思います。
(私のものは現在のリビジョン2011-09-28です)
この図では、 と の後にalloc
、init
参照カウント (または保持カウント) が 1 であり、これが基本的なメモリ管理規則です。の後、retain
参照カウントは 2 になりました。その後、クラス Ccopy
がオブジェクトにメッセージを送信します。その後、オブジェクトの参照カウントは 2 のままです。新しいオブジェクトの参照カウントは 1 です。
ここまではルールに準拠していますが、次に、図の上部で、クラス Arelease
がオブジェクトにメッセージを送信し、参照カウントは 1 になるはずです。ダイアグラムには代わりに 2 があります。その後、クラス B もrelease
オブジェクトにメッセージを送信し、参照カウントは 0 になるはずです。図では代わりに 1 が表示されます。これは正しいですか、それとも図の読み方が違うのでしょうか、それとも上記の概念が正しくないのでしょうか?