UITableView中的cell的最佳化,uitableviewcell

來源:互聯網
上載者:User

UITableView中的cell的最佳化,uitableviewcell

 1.cell的重用

   所謂的cell的重用就是,視圖載入的時候只會建立當前視圖中的cell,或者比當前視圖多一點的cell, 當視圖滾動的時候,滾出螢幕的cell會放進緩衝中,滾進螢幕的cell會根據Identifier從緩衝中擷取cell,如此的迴圈往複,這樣只會建立固定的cell對象,節省了記憶體。

下面是重用cell的代碼:

 //1. 定義重用的標識

   static  NSString *reuseId = @"tg";

    //2,從緩衝中擷取重用cell

    CZTgCell *cell = [tableView dequeueReusableCellWithIdentifier:reuseId];

    

    //3.判斷如果cell等於nil 就建立cell

    if (cell == nil) {

        cell = [[[NSBundle mainBundle]loadNibNamed:@"CZTgCell" owner:nil options:nil]lastObject];

    }

    return cell; 

  2.為什麼定義重用標識符的時候,定義為靜態

    cell調用的次數相當多,會建立多次標識符對象,而靜態變數只會建立一次開闢一塊記憶體,節省了記憶體空間。

  3.cell的init方法的注意點

   重寫init方法,添加子控制項時,在這個方法中,需要對控制項的一次性屬性進行設定,所謂的一次性屬性,指的是像文字的大小啊文字的顏色啊之類的固定值,因為這些屬性和資料沒有關係,提高了效能。

    注意:設定控制項的frame,直接在init方法中headView的frame沒有效果,所以要在layoutSubviews方法中設定各個子控制項的frame,這個方法必須重寫父類的方法。

 4.cell重用的時候,不光要覆蓋資料,也應該要覆蓋對應的狀態,否則重用的時候會把狀態和資料都會重用

  重用解決:在重寫模型的set方法,覆蓋資料和狀態。

5.cell的行高的問題

  cell建立之前多次計算行高,如果行高是固定的,那盡量少用下面的代理方法,因為它會多次調用並計算行高,可以用tableView的rowHeight屬性

  -(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath;

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.