iOS UITableView的复用机制简析




////  ViewController.m

//  D1-SingleGroupTableView//

//  Created by  CE  on 16/4/15.

//  Copyright © 2016年 CE. All rights reserved.

//#import "ViewController.h"@interface ViewController ()//数据源

@property NSMutableArray *dataSource;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

//创建数据

[self createDataSource];

//创建表格视图

[self createTableView];

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

- (BOOL)prefersStatusBarHidden {

return YES;

}

- (void)createDataSource {

self.dataSource = [NSMutableArray array];

for (NSUInteger i=0; i<50; i++) {

NSString *str = [NSString stringWithFormat:@"科密%.2lu号", i+1];

[self.dataSource addObject:str];

}

}

- (void)createTableView {

UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.bounds];

//设置数据源代理

tableView.dataSource = self;

//注册cell类型以及复用标识

[tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cellId"];

[self.view addSubview:tableView];

}

#pragma mark - UITableViewDataSource

//有多少行

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {

return self.dataSource.count;

}

//哪一组的哪一行

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

//面试

//表格视图内部维护了一个cell的复用队列,每次需要新的cell时,可以先从队列中根据复用标识寻找是否有空闲的cell,若有则直接出列使用无需创建新的;若没有可用cell则需要创建新的。

//表格视图上的cell离开显示区域就会自动放入复用队列

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cellId"];

#if 0

//若不想判断,则前面需要注册cell类型及同复用标识

if (!cell) {

static int count = 0;

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cellId"];

count++;

printf("创建cell%d\n", count);

}

#endif

cell.textLabel.text=self.dataSource[indexPath.row];

return cell;

}

@end

你可能感兴趣的:(iOS UITableView的复用机制简析)