2017-11-25 82 views
0

我在我的應用程序中使用lazy var。 Lazy var只初始化一次。當我從托盤中刪除應用程序時,它將清除並用新值初始化。我們可以清除前臺狀態的懶惰變量嗎? 如何在swift iOS中從lazy var中清除值?如何在swift iOS中從lazy var中清除值?

+0

對於swift3,[this](https://stackoverflow.com/a/40847994/5555803)的作品。 –

+0

我也在上面的評論^^^中使用來自鏈接帖子的ClearableLazy解決方案。 – Brynjar

回答

0

事情是lazy vars不是常數。你可以隨時在裏面設置數值。他們只是在需要時才被初始化,一旦他們有了價值,他們就會返回這個價值。因此,使用閉包來「創造」價值。

讓我們使用這個信息,以這種方式玩懶惰的變種。在這裏,我們使用了另一個lazy var閉包來捕獲整數存儲的屬性值,併成功地將其重新分配給lazy變量。

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