2017-11-25 11 views
0

私はアプリケーションでlazy varを使用しています。 Lazy varは一度だけ初期化されます。トレイからアプリケーションを削除すると、新しい値でクリアされ初期化されます。私たちは前景の状態で怠惰なvarをクリアすることはできますか? 迅速なiOSでlazy varの値をクリアするには?迅速なiOSでlazy varの値をクリアするには?

+0

swift3では[this](https://stackoverflow.com/a/40847994/5555803)が動作します。 –

+0

私は上記のコメント^^^のリンク先のClearableLazyソリューションも使用しています。 – Brynjar

答えて

0

事はlazy varsは定数ではありません。その中には常に値を設定できます。必要になったときに初期化され、内部に値が設定されると、その値が返されます。したがって、クロージャを使用して値を「作成」します。

この情報を使用して、この方法で遅延型のバリューを再生できます。ここでは、別の遅延閉包を使用して整数の格納されたプロパティ値を取得し、それをレイジー変数に正常に再割り当てしました。

class Test { 

    var fooValue:Int = 20 

    lazy var foo = {() -> Int in 
     print("foo called") 
     return self.fooValue*3 
    } 

    lazy var value:Int = foo() 
} 

let test = Test() 
test.value // foo called 
test.value // prints 60 

test.fooValue = 40 
test.value = test.foo() // foo called 
test.value // prints 120 
関連する問題