我創建了一個UIWindow
,並使其成爲鑰匙並在didFinishLaunching
中可見,然後再創建另一個UIWindow
並使其成爲鑰匙和可見。我期望第一個窗口被放棄並從內存中釋放,第二個窗口將被顯示。但正如我在調試器(調試視圖層次)中看到的,它們都處於層次結構中。可以更改關鍵窗口嗎?
這是正常的嗎?
UPDATE
的問題不在於爲什麼兩個對象都是在內存中。我想知道爲什麼他們都在視圖層次?我怎樣才能從那裏刪除其中的一個?
注意:關鍵窗口沒有超級視圖,所以我不能通過簡單地調用removeFromSuperview
來實現。
您可以通過刪除所有引用來刪除窗口,以便將其解除分配或隱藏。 – dan
@dan我可能還有一個很強的參考。但我也懷疑第一個窗口被層次結構本身捕獲。就像在將視圖添加到視圖層次結構時發生的那樣。你不覺得這是一個案子嗎? –
不,視圖層次結構中的視圖將保留,因爲它們的超級視圖正在保留它們。沒有超視圖的窗口不會被視圖層次結構保留。 – dan