ARC(Automatic Reference Counting)は、Swiftのメモリ管理の基盤として知られています。
ARCは、オブジェクトの参照カウントを追跡し、メモリリークを防ぐために重要な役割を果たします。
しかし、ARCの一般的な説明だけでは、「どういう仕組みなのか」「どのように動作するのか」を完全に理解するのは難しいことがあります。
本件はARCの詳細な動作原理を深く掘り下げ、実際の使用例を通して理解を定着させることを目的としています。
基本的な仕組みとしては以下になります。
・オブジェクト作成時に参照カウントが1に設定
・参照時: 他の変数がそのオブジェクトを参照するたびにカウントが増加
・参照解除時: 参照が解除されるとカウントが減少し、カウントが0になるとオブジェクトが解放
ただし、ARCも所詮はプログラムです。
ARCには詳しく見てみると、命令は大きく分けて以下の5つの操作があり、それらの命令の組み合わせで実現しています。
この命令群は、どのように実装すればどういうふうに動いてARCを実現しているのか?
メモリの状態はどうなるのか?
最後に、どのようにstrong、weak、unownedを選定すべきか?
これらの、わかった気になっていたARCから完全にわかったARCに変える話をします