UITableViewCell的重用,uitableviewcell

來源:互聯網
上載者:User

UITableViewCell的重用,uitableviewcell
UITableViewCell的重用一、Cell的重用原理:     當滾動列表時,部分UITableViewCell會移出視窗,UITableView會將視窗外的UITableViewCell放入一個對象池中,等待重用。當UITableView要求dataSource返回UITableViewCell時,dataSource會先查看這個對象池,如果池中有未使用的UITableViewCell,dataSource會用新的資料配置這個UITableViewCell,然後返回給UITableView,重新顯示到視窗中,從而避免建立新對象。

     還有一個非常重要的問題:有時候需要自訂UITableViewCell(用一個子類繼承UITableViewCell),而且每一行用的不一定是同一種UITableViewCell,所以一個UITableView可能擁有不同類型的UITableViewCell,對象池中也會有很多不同類型的UITableViewCell,那麼UITableView在重用UITableViewCell時可能會得到錯誤類型的UITableViewCell。

     解決方案:UITableViewCell有個NSString *reuseIdentifier屬性,可以在初始化UITableViewCell的時候傳入一個特定的字串標識來設定reuseIdentifier(一般用UITableViewCell的類名)。當UITableView要求dataSource返回UITableViewCell時,先通過一個字串標識到對象池中尋找對應類型的UITableViewCell對象,如果有,就重用,如果沒有,就傳入這個字串標識來初始化一個UITableViewCell對象。

二、Cell的效能最佳化
UITableView預設只會載入出現在螢幕上面的cell,沒當有一個cell移除螢幕,就會儲存到緩衝池裡找。
效能最佳化步驟:
步驟一:定義cell的標識(不需要每次都建立cell標識,因此需要使用static,static標識只會在第一次建立,以後都不會建立了。)
步驟二:從緩衝池裡取cell
步驟三:判斷取出cell是否為空白,如果為空白就手動建立cell。

三、如何提高tableView的效能
a、重用cell
我們都知道申請記憶體是需要時間,特別是在一段時間內頻繁的申請記憶體將會造成很大的開銷,而且上tebleView中cell大部分情況下布局都是一樣的,這個時候我們可以通過回收重用機制來提高效能。
b、避免content的重新布局
盡量避免在重用cell時候,對cell的重新布局,一般情況在在建立cell的時候就將cell布局好。
c、使用不透明的subView
在定製cell的時候,將要添加的subView設定成不透明的會大大減少多個view層疊加時渲染所需要的時間。
d、如果方便,直接重載subView的drawRect方法
如果定製cell的過程中需要多個小的元素的話,最好直接對要顯示的多重專案進行繪製,而不是採用添加多個subView。
e、tableView的delegate的方法如非必要,盡量不要實現
tableView的delegate中的很多函數提供了對cell屬性的進一步控制,比如每個cell的高度,cell是否可以編輯,支援的edit風格等,如非必要最好不要實現這些方法因為快速的調用這些方法也會影響效能。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.