2012-01-27 15 views
0

私は基本的なメモリ管理ルールのAppleの文書を読んでいました。私は文を見つけました。これは、「どのオブジェクトにも1人以上の所有者がいるかもしれません。2人の所有者を持つオブジェクト

これはどういう意味ですか? 2人の所有者を持つオブジェクト。 私はOOPの概念に精通していません。

答えて

3

メモリ管理では、オブジェクトが別のオブジェクトへの参照を所有している場合、そのオブジェクトは保持されます。

複数のオブジェクトはオブジェクトを保持することができ、オブジェクトに保持がない場合は誰もそれを所有していなくなります。 retainは参照カウントを増加させ、releaseはそれを減少させます。

良い類推は、ペットにひもを付けることです。複数の人々はひもを付け加えることができますが、ひもが付いていなければそれは消えるでしょう:)

参照を取得している即時関数以外のオブジェクトへの参照を使用する場合は、あなたはそれを保持すべきです。 alloc、copy、mutableCopyを呼び出して参照を取得した場合、それを保持しただけです。別のメッセージ名で取得した場合、標準ではオートレリースされています(これは問題ありません)。

+0

「ひも」の類推が大好きです! – zaph

2

"所有する"とは、 "参照を保持する"という意味です。 iOSのメモリ管理は明示的であり、参照カウントによって行われます。オブジェクトに送信される「保持」メッセージは参照カウントを増加させ、「解放」メッセージは参照カウントを減少させる。参照カウントが0になると、オブジェクトは解放されます(最初に "dealloc"メッセージが送信されます)。これは、NSObject階層のオブジェクトに適用されます。

したがって、あるオブジェクトが将来、ある時点で引き続き使用したいオブジェクトへの参照を渡すと、そのオブジェクトはそのオブジェクトへのポインタのコピーを保持し、それに "retain"メッセージを送ります。 「所有者」がアクセスしたいときにオブジェクトは解放されません。

関連する問題