? ? ? 關(guān)于tableView的重用機(jī)制,不用重用機(jī)制的話斜做,會(huì)很消耗內(nèi)存场躯,并且造成tableView滑起來(lái)會(huì)有卡頓現(xiàn)象谈为,所以用重用機(jī)制是非常有必要的!踢关!
具體的代碼如下:
? ? ? ? ?以下是我自己對(duì)cell 的重用的理解伞鲫,給大家分享這里,先說(shuō)一下重用是如何實(shí)現(xiàn)的签舞,加入我們有一個(gè)很長(zhǎng)的tableview秕脓,假設(shè)是100行,但在我們?cè)O(shè)計(jì)的行高情況下儒搭,屏幕 只能顯示4行吠架,所以,當(dāng)加載view的時(shí)候搂鲫,實(shí)際我們需要?jiǎng)?chuàng)建5各cell诵肛,只這4個(gè)cell是靜態(tài)顯示,當(dāng)我們用手指向上滑動(dòng)即下方的第5個(gè)cell向上滑進(jìn)界面的過(guò)程中默穴,我們發(fā)現(xiàn)第一行的cell會(huì)滑出界面,當(dāng)滑出后褪秀,第一行這個(gè)cell對(duì)象會(huì)被放到對(duì)應(yīng)重用標(biāo)示符重用隊(duì)列中蓄诽,第5行顯示在屏幕上。當(dāng)我繼續(xù)向上滑動(dòng)媒吗,第二行的cell對(duì)象同樣會(huì)放在重用隊(duì)列中仑氛,第6個(gè)cell將獲得重用隊(duì)列中的一個(gè)cell,這樣闸英,這樣在后面的重用中就就可以正常的工作起來(lái)了锯岖,可以很好的控制內(nèi)存。
staticNSString*ID=@"id"; ?
這個(gè)是重用標(biāo)識(shí)符
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIdentifier];
意思是定義一個(gè)cell甫何,在tableview中的可重用隊(duì)列中尋找有CellTableIdentifier標(biāo)識(shí)的UITableViewCell出吹,以進(jìn)行重用。
這個(gè)Identifier可以由我們自由定義成一些字符串辙喂。當(dāng)然捶牢,如果在隊(duì)列中有這樣的UITableViewCell鸠珠,那么則返回它給 cell,若沒(méi)有秋麸,則返回nil給cell渐排。因?yàn)槲覀冊(cè)趯?xiě)程序時(shí)經(jīng)常需要用到好幾個(gè)表格,每個(gè)表格中的cell布局都不一樣灸蟆,所以我們需要將在同一個(gè)表格的cell(布局一樣)進(jìn)行標(biāo)記Identifier驯耻,這樣,在重用的時(shí)候可以得到匹配的cell炒考。當(dāng)有多個(gè)表格是可以定義多個(gè)標(biāo)記可缚。
if(cell ==nil) {
cell=[[UITableViewCellalloc]initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:ID];
}
若返回的是nil,即cell==nil票腰,則我們需要分配空間并初始化一個(gè)cell城看,而且需 要關(guān)聯(lián)reuseIdentifier,以便后面重用的時(shí)候能夠根據(jù)Identifier找到這個(gè)cell杏慰,若cell不為nil测柠,則重用成功,并可 return此cell缘滥。