2016-06-14 37 views
2

作爲一名新開發人員,我有點不確定我們應該在iOS上使用Swift之後應該清理多少。有很多不同的信息,因爲自從iOS開始以來,這種情況也發生了很大的變化。使用Swift for iOS應該做多少清理?

所以,當我們有靜態視圖和使用故事板時,我得到了一切爲我們清理的想法,我們不必做(幾乎)任何事情。

但是,當我基於用戶點擊動態創建視圖時,該怎麼辦?在需要的情況下清理引用的最佳方法是什麼?

現在我在做,好像我在做Android的簡單設置我的全球參考零之前,我做一個視圖等新實例,我讀過這應該像做:

myView?.removeFromSuperview() 
+1

如果你的目標是清理,你不需要調用'removeFromSuperview'。如果您的目標是更改用戶界面,請在適當的地方調用removeFromSuperview。如果你正確地使用引用和弱引用(就像蘋果做得很好),幾乎沒有需要用Swift編寫的「清理」代碼。 – nhgrif

回答

1

儘管Swift使用的自動引用計數方法與Java的垃圾收集方法有很大的不同,但程序員的感覺卻非常相似。一方面,您必須意識到在Swift中創建循環引用的可能性,並插入弱引用以避免循環。另一方面,您可以依靠釋放最後一個參考後立即釋放資源,並使用deinit方法來處理清理。

但是,當我創建我的看法什麼動態

動態創建視圖,並將它們添加到Cocoa的視圖層次結構確保了當視圖層次結構決定它不再需要他們的意見將被釋放。

在Cocoa回收視圖的情況下,您必須小心謹慎。當您將視圖添加到表格視圖單元格或集合視圖單元格時。由於單元格被回收,您需要(1)刪除添加的視圖以避免再次添加視圖,或者(2)檢查視圖是否已添加,並重用已存在的視圖。

單元回收時放棄添加視圖的一種方法是實現prepareForReuse方法,並刪除其中的添加視圖。

1

即使您動態創建視圖,也不必調用removeFromSuperview,因爲視圖對其超級視圖的引用很弱。

查看this topic瞭解更多信息。