2016-09-13 17 views
0

私は非常に単純な問題のように思えますが、私は何か不足していると思います。Swiftの再帰型定義

上記のクラスのメンバである間に、クラスに型付きの再帰変数(?)を作成しようとすると、プログラムがクラッシュします。たとえば:

class A { 
    var x: A 

    init() { 
     x = A() 
    } 
} 

クラッシュログを確認するinit()が無限に呼び出されると、ある種の再帰を示唆しています。

は、この種の問題を解決するために、適切な方法/構文は、私はクラスAに入力するための変数xを必要とし、初期化子は、クラスAに変数xを初期化しなければならないことを考えると、ありますか?

+3

スタックオーバーフローを引き起こす通常の無限再帰です。ここに何も間違っていない:) – Avt

答えて

2

のように、このメソッドを呼び出すことができると思います。したがって、Optionalと宣言し、インスタンスの作成後に初期化する方が良いでしょう。

class A { 
    var x: A? 
} 

let mainObject = A() 
let nestedObject = A() 
mainObject.x = nestedObject 
1

わからないが、私はあなたがこの

class A { 
    var x: A? 

    init() { 
    } 

    anothermethod() { 
     x = A() 
    } 
} 

を探している、あなたはそれはいくつかのステップであなたが初期化されていないプロパティxを左にすべきであることは明らかです

let a = A() 
    a.anothermethod()