2015-09-25 52 views
-1

誰是最佳優化方式?用UI或編程創建TableView對象?

使用故事板在我的UITableView中創建對象(拖放到我的單元格中),或以編程方式創建對象(cellForRowAtIndexPath)?

當項目編譯並運行在設備中哪兩個選項運行速度會更快?

+0

試試看看哪個更快。 – rmaddy

+0

@maddy我怎樣才能做到這一點,並在控制檯日誌上顯示秒數? – LettersBa

+1

在'init ...'方法和'viewDidAppear:'結尾獲取當前時間。 – rmaddy

回答

1

就純性能而言,代碼創建的UI對象比任何nibs/storyboards對象都快,這是因爲故事板和nibs文件存儲在磁盤上,直到它們被加載到內存中並在UIKit對象中被翻譯爲止。

這就是說,它也取決於你如何實現它。如果您在storyboard中使用原型單元格,並且每次都在cellForRowAtIndexPath中創建單元格,則由於重用單元格(儘管您也可以重新使用代碼創建單元格),故事板獲勝。

而且,再說一次,通過使用代碼創建UI所獲得的性能贏得的收益是很小的,甚至不會被人眼所感知。因此,對我而言,使用故事板對於輕鬆創建界面而言不會污染代碼是一件容易的事。

你可以在這裏看到一篇不錯的文章:http://www.toptal.com/ios/ios-user-interfaces-storyboards-vs-nibs-vs-custom-code。該文章是約。 1歲但仍然準確。

1

對於相同的佈局,有效性能將相同。我會根據不同的需求選擇一種方法。

故事板原型單元可以更快地進行設置,更容易使Autolay約束正常工作,但是您無法在故事板之外重複使用該原型單元。如果需要跨多個視圖使用相同的單元格佈局,則需要使用代碼或使用nib文件編寫表格視圖單元格。

另外,應該指出的是,如果使用Storyboard原型單元格來配置單元格,假設您有某種要顯示的動態數據,則仍然需要使用cellForRowAtIndexPath。同樣,在編程方法中,您不應該在cellForRowAtIndexPath中創建視圖,而是配置它們。