何がカウントを保持するのか理解しています。しかし、完全ではありません。私は理解しようとグーグルをよく見ましたが、それでも私は理解していません。
そして今、私は少しコードを書いています(私はiPhoneの開発をしています)。私はそれらを使うべきだと思いますが、完全にはわかりません。
誰かが私にそれらを使用する方法と理由の迅速で良い例を教えてもらえますか?
ありがとう!
何がカウントを保持するのか理解しています。しかし、完全ではありません。私は理解しようとグーグルをよく見ましたが、それでも私は理解していません。
そして今、私は少しコードを書いています(私はiPhoneの開発をしています)。私はそれらを使うべきだと思いますが、完全にはわかりません。
誰かが私にそれらを使用する方法と理由の迅速で良い例を教えてもらえますか?
ありがとう!
私が今まで聞いた中で最も良い説明は、Aaron Hillegass によるものです。
オブジェクトを犬と考えてください。犬が逃げて姿を消さないようにするために、犬にひもが必要ですよね?
retain
ここで、 a をリーシュと考えてください。を呼び出すたびretain
に、犬の首輪にリードを追加します。あなたは「この犬をそばに置いておきたい」と言っています。ひもをしっかりとつかむことで、犬はあなたがそれをやり終えるまで留まることが保証されます。
release
aは、犬の首輪からリードを 1 本外すことと考えてください。すべてのひもを外すと、犬は逃げることができます。犬が今後もいるという保証はありません。
今、あなたが電話retain
して犬にひもをつけたとしましょう。私も犬が必要なので、あなたと一緒に歩き、訓練を始めます。犬の世話が終わったら、電話release
してひもを外します。私がまだ彼を訓練していたにもかかわらず、リードがなくなり、犬が逃げてしまいました!
代わりに、retain
訓練を開始する前に犬を呼び寄せると、首輪に 2 つ目のリードを付けます。あなたが電話release
してリードを外すと、私はまだリードを持っていて、犬はまだ離れることはできません.
retain
さまざまなオブジェクトが、犬を呼び出して首輪に別のひもを付けることで、犬を「所有」できます。各オブジェクトは、それが完了するまで犬が離れないようにしています。すべてのひもを外すまで、犬は立ち去ることができません。
自動解放プールはより複雑になりますが、単純に言えば、呼び出しautorelease
はリーシュをトレーナーに渡すことと考えることができます。犬はもう必要ありませんが、リードをすぐに外していません。トレーナーは後でひもを外します。犬が必要なときに犬がそばにいるという保証はまだありません。
まだお読みでない場合は、Apple のメモリ管理プログラミング ガイドをよくお読みになることを強くお勧めします。
そこには、特に保持カウントに関するセクションがあります