親切すぎるiPhoneアプリ開発の本

オブジェクトの生涯 - 循環参照の問題

Icon comment count 0
Icon stock count 0

3 循環参照の問題

このようにプログラマにとって非常に強力な味方となるARCですが、自動処理には限界があります。

3.1 循環参照

次のように互いのオブジェクトを参照する状態を「循環参照」と呼びます。

↓ main.swift サンプル:03/StudyObjectLife-03
class Person {
    var friend:Person! ← 別のPersonを結びつける
        ・・・
}
var a:Person! = Person(name:"A君")
var b:Person! = Person(name:"B君")
a.friend = b
b.friend = a
a = nil
b = nil

Runしてみてください。

最後にnilを設定しているにもかかわらず「…はメモリから消えます。」というメッセージは表示されません。この理由は次のようなオブジェクト間の循環した参照状態によるものです。

↓ aにnilを設定する直前のオブジェクト間の参照状態

この状態からaにnilが設定された場合、次のような遷移が発生します。

↓ aにnilを設定した状態

出典情報

Medium

親切すぎるiPhoneアプリ開発の本

  • 著者: 國居 貴浩

コメント

    コメントはありません