創(chuàng)建一個單元格cell ,從邏輯上來說,我們可以有三種方式:如下 ?(推薦使用第三種)
? //方式1 :原始方式方式1是每移除一個,就創(chuàng)建一個cell,會不停的創(chuàng)建,性能低,總有內(nèi)存爆滿的時候,會崩潰,所以這種方式不妥,如下:
UITableViewCell*cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleSubtitlereuseIdentifier:nil];
//方式2:如剛好一個頁面有8個cell,一啟動會創(chuàng)建8個,當滾動一點點的時候,第一個沒有進緩存池,而第9個已經(jīng)出來了,這個時候又多了一個cell,這種方式至少會創(chuàng)建9個,如果是ABAB型的,還會有第10個,也有點不妥,如下:
UITableViewCell*cell = [tableView dequeueReusableCellWithIdentifier:ID];
if(cell ==nil) {
cell = [[UITableViewCellalloc]initWithStyle:UITableViewCellStyleSubtitlereuseIdentifier:ID];
}
//方式3:這種方式是最好的,如,也是ABAB類型的,到緩存池里面找和創(chuàng)建cell是一步搞定,底層是直接就寫好了的,但注意,這里需要在啟動程序的時候注冊一個cell,也就是在viewDidLoad里面,這種方式也是最好的,對于性能的優(yōu)化是最恰當?shù)?所以推薦用這種!!
UITableViewCell*cell = [tableView dequeueReusableCellWithIdentifier:ID forIndexPath:indexPath];
//此時,當一個cell從屏幕滾出去以后,不會銷毀,而是放到了"緩存池"中;
這個方法需要先注冊一個cell,如下:
#pragma mark ----viewDidLoad設(shè)置數(shù)據(jù)源對象
- (void)viewDidLoad {
[superviewDidLoad];
//注冊一個cell
[self.tableViewregisterClass:[UITableViewCellclass]forCellReuseIdentifier:ID];
}
——>
這里為方法3注冊的一個cell,便于方式3調(diào)用;要用這種方法,必須要先注冊一個cell 在viewDidload 里面注冊,注冊就是告訴系統(tǒng),我們用的ID到底是什么類型的cell,
<——