2018-07-16Organization【Swift】weakやunownedなどの参照についてまとめてみたselliOS,Swiftこれは?タイトルの通りです。Countingの資料をもとに書き下しています。Counting)によって管理されています。このARCについてサクッと説明した後、それに関連する強参照,弱参照(weak)そして非所有参照(unowned)について説明します。ARCとは新しいインスタンスを初期化する際に、ARCはそのインスタンスの型や保有するプロパティに応じたメモリを確保します。そのインスタンスが必要なくなったらARCは確保しているメモリを解放します。必要なインスタンスにもかかわらずメモリを解放してしまった場合、その後インスタンスにアクセスしようとすれば当然クラッシュしてしまいます。これを防ぐために、ARCはそれぞれのインスタンスがいくつのプロパティや変数,定数から参照されているかをカウントし、その参照カウントがゼロにならない限りメモリは解放しないようになっています。実際に例を用いてARCの挙動を見てみましょう。呼び出されたときにメッセージを出力します。次のコードでは、Personクラスの新しいインスタンスに対する複数の参照を示します。Appleseedという名前を持つ新しいPersonインスタンスが初期化され、そのインスタンスは現在reference1,2,3の3つの変数からの参照を持つことがわかります。ここでreference2,3の参照を切ってみましょう。nilインスタンスへの参照は、reference1からの参照が1つ残っているためまだメモリは解放されません。呼び出されていませんね)では最後にreference1の参照も切ってみましょう。