天天看點

UITableView的重用機制

        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對象。

繼續閱讀