2017-04-11 12 views
0

私のプロパティゲッターがselfを参照していて、それがselfを保持し、決してそれをリリースしないという疑いがある場合があります。このケースで間違いがないかどうか説明してください。変数に弱い自己を使うべきでしょうか?

private var storyboard: UIStoryboard { 
    get { 
     return UIStoryboard(name: "Login", bundle: Bundle(for: type(of:self))) 
    } 
} 
+0

プロパティゲッターはクロージャではありません。コンパイラーは、所有されていない自己を使用させません。 – dan

+0

計算されたプロパティは、栄光に満ちた(ペアの)メソッドのものではなく、保持サイクルの問題はありません。あなたはそれをテストしましたか(つまり、 'deinit'に' print'を入れましたか?) – Hamish

+0

@Hamishはい、このプロパティを含むクラスに接続されたメモリリークがあります。 –

答えて

2

あなたが間違いを犯していない - 計算されたプロパティは、メソッドの見せかけの方法/ペアに過ぎません。それ自体は、保持サイクルの問題はありません。

selfは、単に計算されたプロパティのゲッターまたはセッターを呼び出すときに渡される暗黙のパラメーターであり、プロパティーがアクセスされているインスタンスになります。プロパティーには格納されず、キャプチャーされません。

関連する問題