2013-11-01 38 views
0

我想知道是否可以在UIView上調用willMoveToSuperview,然後保留該視圖以便稍後重用?像下面willMoveToSuperview是否也會釋放其被調用的UIView?

if (!CGRectIntersectsRect(cell.frame, visibleRegion)) { 
    [cell willMoveToSuperview:nil]; 
    [self.resuableCells addObject:cell]; 
} 
+0

你爲什麼要調用'willMoveToSuperview:'?你不應該這樣稱呼。它將在適當的時候被框架調用。你的目標是什麼? – rmaddy

回答

1

我不知道你的意圖在這裏...

WillMoveToSuperview - 據商務部:

此方法的默認實現不執行任何操作。只要超級視圖改變,子類就可以覆蓋它以執行其他操作。

所以你的代碼,

[細胞willMoveToSuperview:無]。

除非您在單元格子類中重寫此方法並在其中實現您自己的邏輯,否則不起作用。

來到你的問題 -

不willMoveToSuperview也將解除分配上其接到電話了UIView?

答案很明顯 - NO。

0

willMoveToSuperview是一個觀察者方法,系統爲了向您提供一個禮貌的方法,以便讓您有機會在完成其他隱藏任務之前處理特殊情況。

它的默認行爲是什麼也不做,但是您可能需要在重寫此方法之前清理代碼中的某些內容。

一個恰當的用例可能是如果你有一個視圖正在播放視頻剪輯或動畫,並且你的代碼中的其他內容會將視圖從當前層次結構中剝離出來並放入其他一些不相關的視圖中層次結構。您可能希望有機會在移動之前暫停剪輯或暫停動畫。

我懷疑這是正確的方法來處理你正在嘗試,我絕對知道你不應該直接調用它。

隨意發佈一些更多的代碼,告訴我們你想要完成什麼以及哪裏出錯。

相關問題