iOSアプリを作ってると気づかないうちにやってしまっている循環参照。 メモリリークの原因は大概コレが原因となっていると思います。 1.循環参照とは? 循環参照とは「クラスAとクラスBのインスタンスがそれぞれ存在した時、クラスAのインスタンスをクラスBのプロパティに格納し、クラスBのインスタンスをクラスAのプロパティに格納する」といった状態になった時に、お互いにインスタンスを参照しあうため、どちらも解放されずにそのまま残り続けてしまう、という現象です。 2.強参照と弱参照 クラスのインスタンスは何も指定しなければ通常「強参照」と呼ばれる形で代入されます。 強参照とは、端的に言えば親子関係です。 親が解放されると子も自動的に解放されます。 ここで上記のようにお互いが親としてインスタンスを保持すると循環参照が起きるわけです。 そこで、この循環参照が起こることを防ぐために弱参照を使います。 Swi
![【Swift】ハマりがちな循環参照について - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/bdf7ba51244401217163af20cd792667bcf47652/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUUzJTgwJTkwU3dpZnQlRTMlODAlOTElRTMlODMlOEYlRTMlODMlOUUlRTMlODIlOEElRTMlODElOEMlRTMlODElQTElRTMlODElQUElRTUlQkUlQUElRTclOTIlQjAlRTUlOEYlODIlRTclODUlQTclRTMlODElQUIlRTMlODElQTQlRTMlODElODQlRTMlODElQTYmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTE2ZjFhYzA1YWViNjQ2NGMxMGE2MzI0ZjcyMmJiNTZk%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwMTIzNDIyNDU3NiZ0eHQtY29sb3I9JTIzMjEyMTIxJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTM2JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnM9NWRjMmYxZjY4NDBhMjhmM2ZhMDk5YWVlOWY5ODFlMDU%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Db6441ff8b75794cbaaf4320d29af35aa)