インスタンスを格納した配列をweak化するには


いつもお世話になっております。

複数のインスタンスを配列で管理し、その配列を別クラスで管理したいと考えてます。  
循環参照になってしまい解放されない状況になってしまいました。  
どのように配列をweakさせれば良いでしょうか？

よろしくお願い致します。

サンプルコード

[code]

    class Human {
        init() {}
        deinit { print("deinit Human") }
    }
    class Home {
        var family: [Human?]?  // weakしたい
        init() {}
        deinit { print("deinit Home") }
    }
    var humanA: Human? = Human()
    var humanB: Human? = Human()
    var home: Home? = Home()
    home!.family = [humanA!, humanB!]
    humanA = nil  // deinitされない
    
[/code]




これは循環参照ではなく、一つのインスタンスがhumanAとhome!.family[0]に代入されている(共有されている)状態です。  
`humanA = nil`  
だけでなく、  
`home!.family.remove(at: 0)`  
等の方法で、familyの方に代入されているインスタンスも削除する必要があります。




これは循環参照ではなく、一つのインスタンスがhumanAとhome!.family[0]に代入されている(共有されている)状態です。  
`humanA = nil`  
だけでなく、  
`home!.family.remove(at: 0)`  
等の方法で、familyの方に代入されているインスタンスも削除する必要があります。

