UITableView的重用機制

2021-07-09 04:09:52 字數 950 閱讀 3068

uitableview的重用機制是蘋果公司為了大量的資料顯示而採用的一種節省記憶體的機制,在大量資料的前提下,也需要有充足的顯示這些資料的行(也就是uitableviewcell)。那麼是否需要來建立成百上千的資料行來裝這些資料,然後顯示出來呢。這將會消耗大量的記憶體,重用機制就是來解決這一問題的。

重用機制實際上就是重用uitableview中的cell物件。當我們在顯示器上滾動列表時,已經顯示出來的cell會被移出顯示視窗,uitableview並不是對這些cell物件置之不理了,uitableview會將移出去的cell物件放入乙個物件池中,等待重用,當uitableview要求datasource返回uitableviewcell時,datasource會先檢視這個物件池,如果池中有沒有使用的cell物件,datasource會用新的資料來配置上這個重用的cell,返回給uitableview,重新顯示到顯示視窗中,這樣就避免了再次建立cell物件

實現重用機制的方法dequeuereusablecellwithidentifier:

uitableviewcell *cell = [tableview dequeuereusablecellwithidentifier:cellidentifier];



重用機制中有乙個很重要的問題:

當需要自定義cell(用乙個子類繼承cell)而且每一行用的不一定是同一種cell,所以乙個uitableview可能擁有不同型別的cell,物件池中會有許多不同的cell,那麼在重用cell時會得到錯誤的cell。

如何解決??:cell有乙個nsstring *reuseldentifier屬性,可以在初始化cell時傳入乙個特定的字串標識來設定reuseldentifier(一般用uitableviewcell的類名)當tableview要求datasource返回cell,先通過乙個字串標識到物件池中查詢對應型別的cell物件,如果有,就重用,如果沒有,就傳入這個字串標識來初始化乙個uitableviewcell物件。

IOS開發之 UITableView重用機制

對table view的資料進行繫結,即填充cell,自動呼叫n次 uitableviewcell tableview uitableview tableview cellforrowatindexpath nsindexpath indexpath cell.text soundsignature...

UITableView 重用機制

dequeueresablecellwithidentifier方法 對table view的資料進行繫結,即填充cell,自動呼叫n次 uitableviewcell tableview uitableview tableview cellforrowatindexpath nsindexpath...

UITableView的重用機制

uitableviewcell tableview uitableview tableview cellforrowatindexpath nsindexpath indexpath return cell uitableview內部會有兩個nsmutablearray visiablecells內...