ARCを「わかった気」から「完全にわかった」にする話 by やまひろ

iOSDC Japan 2024
ルーキーズLT(5分)

ARCを「わかった気」から「完全にわかった」にする話

やまひろ yamahiro248
2

ARC(Automatic Reference Counting)は、Swiftのメモリ管理の基盤として知られています。
ARCは、オブジェクトの参照カウントを追跡し、メモリリークを防ぐために重要な役割を果たします。

しかし、ARCの一般的な説明だけでは、「どういう仕組みなのか」「どのように動作するのか」を完全に理解するのは難しいことがあります。
本件はARCの詳細な動作原理を深く掘り下げ、実際の使用例を通して理解を定着させることを目的としています。

基本的な仕組みとしては以下になります。
・オブジェクト作成時に参照カウントが1に設定
・参照時: 他の変数がそのオブジェクトを参照するたびにカウントが増加
・参照解除時: 参照が解除されるとカウントが減少し、カウントが0になるとオブジェクトが解放

ただし、ARCも所詮はプログラムです。
ARCには詳しく見てみると、命令は大きく分けて以下の5つの操作があり、それらの命令の組み合わせで実現しています。
この命令群は、どのように実装すればどういうふうに動いてARCを実現しているのか?
メモリの状態はどうなるのか?
最後に、どのようにstrong、weak、unownedを選定すべきか?

これらの、わかった気になっていたARCから完全にわかったARCに変える話をします