UITableView的重用機制


UITableView通過重用單元格來達到節省內存的目的:通過為每個單元格指定一個重用標識符(reuseIdentifier),即指定了單元格的種類,以及當單元格滾出屏幕時,允許恢復單元格以便重用.對於不同種類的單元格使用不同的ID,對於簡單的表格,一個標識符就夠了.

假如一個TableView中有10個單元格,但是屏幕上最多能顯示4個,那么實際上iPhone只是為其分配了4個單元格的內存,沒有分配10個,當滾動單元格時,屏幕內顯示的單元格重復使用這4個內存,以下代碼用於測試內存的使用:

 1 - (UITableViewCell *)tableView:(UITableView *)tableView 
 2          cellForRowAtIndexPath:(NSIndexPath *)indexPath
 3 {
 4     UITableViewCellStyle style = UITableViewCellStyleSubtitle;
 5     static NSString *cellID = @"cell";
 6     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
 7     if (cell == nil)
 8     {
 9         cell = [[[UITableViewCell alloc] initWithStyle:style reuseIdentifier:@"cell"] autorelease];
10         cell.detailTextLabel.text = [NSString stringWithFormat:@"Cell %d",++count]; //當分配內存時標記
11     }
12     cell.textLabel.text = [NSString stringWithFormat:@"Cell %d",[indexPath row] + 1];  //當新顯示一個Cell時標記
13     return cell;
14 }

通過運行此代碼 會發現實際上分配的Cell個數為屏幕最大顯示數, 當有新的Cell進入屏幕時,會隨機調用已經滾出屏幕的Cell所占的內存,這就是Cell的重用

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM