2015-09-02 114 views
-1

我是一個新的Swift學習者。現在我對Swift對象的重新分配感到困惑。例如,我在viewDidload()方法中創建了一個UIView對象並將其添加到主視圖。我認爲我創建的視圖應該在調用方法viewDidload()後直接銷燬,因爲它是一個局部變量。什麼時候快速刪除對象?

但我仍然可以在屏幕上看到這個視圖,這讓我非常困惑。誰能幫我?非常感謝你!

+0

_...我仍然可以在screenShow_上看到這個視圖,請顯示你的代碼,請 –

+0

嗨,我的意思是這個視圖肯定還在屏幕上,所以這讓我感到困惑。但是現在我通過閱讀關於ARC的一些知識來更好地理解它。 – user3788747

回答

3

當你把你的視圖到主視圖,發生了什麼幕後的主要觀點把你的觀點的「所有權」被你給它一個強有力的參考吧。這就是爲什麼它仍然顯示在屏幕上,並沒有被釋放。

在Swift Docs中查看本指南以瞭解有關ARC的更多信息。

https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html#//apple_ref/doc/uid/TP40014097-CH20-ID49

+0

你好,你幫了我很多。謝謝! – user3788747

1

使用引用來控制對象生存期。如果將視圖添加到另一個視圖,那麼它仍然被該視圖引用,作爲子視圖。

從視圖中刪除該子視圖,例如, someView.removeFromSuperView()將刪除引用,雖然你將需要原始參考這樣做:/

你爲什麼要視圖被破壞,但仍清晰可見?

1

所以它保留計數您已添加視圖視圖控制器的視圖爲1(這是大於0,因此該對象將不會被釋放)。如果你沒有手動從超級視圖中移除你的視圖,它將在超級視圖釋放期間被解除分配。