Xcode8から登場したDebug Memory Graphという機能を試してみました。
これはインスタンス間の参照を図として表示できるもので、循環参照の発見などに役立ちます。
Debug Memory Graphは、アプリ起動後にデバッグエリア右端のアイコンをタップする事で実行できます(下画像の右端)
アイコンをタップすると、下のようにアプリ上のインスタンス一覧が表示されます。
インスタンスを選択すると、下のようにインスタンス同士の参照を図として見る事ができます。
次に、下のように循環参照する処理を書くとどうなるか試してみました。
class MyClassA { var myClass: MyClassB? } class MyClassB { var myClass: MyClassA? } let myClassA = MyClassA() let myClassB = MyClassB() myClassA.myClass = myClassB myClassB.myClass = myClassA
Debug Memory Graphで見ると、下のように相互に参照をもっている事が分かります。
インスタンス一覧には紫色の警告マークが出るので、循環参照がすぐに分かります。
循環参照がない場合は下のように一方向だけの矢印になります。