クラスの新しいインスタンスを生成するたびに、そのインスタンスについての情報を保管するために ARC はメモリを割り当てます。このメモリは、インスタンスに関連するストアドプロパティの値とともに、インスタンスの型についての情報を保持します。
加えて、インスタンスが必要なくなったときに、メモリを他の目的に使用できるように、ARC はそのインスタンスが使用していたメモリを解放します。これによって、必要が無くなっているときに、クラスのインスタンスがメモリのスペースを取ることがないようにします。
一方で、ARC がまだ使用中のインスタンスの割り当てを解除しようとしてしまうと、そのインスタンスのプロパティにアクセスすることや、そのインスタンスのメソッドを呼び出すことができなくなります。実際に、インスタンスにアクセスしようとすると、アプリは十中八九クラッシュします。
インスタンスがまだ必要な間にインスタンスが消えてしまうことがないよう、各クラスのインスタンスをプロパティ、定数、変数が現在参照している数を ARC は記録します。まだ存在しているインスタンスの参照が 1 件以上ある限り、インスタンスの割り当てを解除しません。
これを実現するために、クラスのインスタンスをプロパティや定数、変数に代入すると、そのプロパティや定数、変数はそのインスタンスに対して強い参照を持ちます。そのインスタンスをしっかりとつかみ続け、強い参照が残っている限りは割り当て解除されないため、この参照を「強い」参照と呼びます。
Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.