當蘋果爲第一款iPhone開發UITableView
時,它們在滾動時遇到了性能問題。然後一位聰明的工程師發現,其原因是物體的分配帶有價格,所以他想出了一種重用單元的方法。UITableView dequeueReusableCellWithIdentifier理論
「對象分配有性能上的成本,尤其是如果分配有在短期內,比如說,當 用戶滾動表視圖。如果你重用的小區,而不是分配 新的,反覆發生的大大提升桌面表現。「
來源:iOS的參考庫
要重新使用單元格使用:
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
現在,我想知道是,到底發生了什麼嗎?如果有一個具有該標識符的單元格並返回該單元格,它是否會查看TableView?好吧,是啊,但如果它發送一個引用而不是分配,我有一個表視圖,讓我們說4個單元格具有相同的標識符都是可見的。它怎樣才能將自身擴展爲四個實例而不分配?
我想知道這一點,因爲我正在構建日曆類型組件,並且所有單元格都具有相同的結構,只有更改中的文本。所以如果我能以某種方式重用我的單元而不是分配,我想我可能會獲得更好的性能。
我自己的理論是它分配了四個單元格(因爲它也有)。當一個單元從屏幕上消失時,它將被放入TableView重用隊列中。當需要一個新的單元時,它會查詢具有相同標識符的單元是否可用,它會在該單元上調用prepareForReuse
方法,並將其自身從隊列中移除。
簡答:是的。它有一個單獨的重用隊列/集合,與表中已有的不同。 – 2010-08-23 23:18:15