12

コントローラーUITableViewを備えた最初の画面を持っています。UINavigation

私の最初の画面では、呼び出さNSLog(@"Home Screen retain Count=%d",[self retainCount]);れたときに6がログインします。viewDidLoad

これは正しいです?

4

2 に答える 2

15

保持カウントは、オブジェクトに未処理の所有権クレームの数です。

名前が「alloc」または「new」で始まるメソッドまたは「copy」を含むメソッド(alloc、newObject、mutableCopyなど)を使用してオブジェクトを作成する場合、またはオブジェクトに保持メッセージを送信する場合は、オブジェクトの所有権を取得します。これらはすべて、retainCountをインクリメントします。

「リリース」または「自動リリース」を使用して所有権を放棄します。これらはretainCountをデクリメントします。

ただし、retainCountの値には注意を払うべきではありません。混乱を招き、最悪の場合は誤解を招く可能性があります。単にメモリ管理ルールに従ってください。オブジェクトへの参照を保持する必要がある場合は所有権を取得し、終了したら所有権を放棄してください。問題は発生しません。

あなたがretainCountを見ているなら、あなたは物事を間違った方法で行っているでしょう、そしてあなたは単にあなた自身をさらに混乱させるでしょう。

于 2009-07-30T14:38:01.230 に答える
1

いいですね。なぜそれは間違っているのでしょうか?

一般に、保持カウントから物事を判断しようとするのは悪い考えです。オブジェクトを保持できる時間についての規則はありません。唯一のルールは、各保持とリリースのバランスを取る必要があるということです。

于 2009-07-30T12:10:18.563 に答える