單元格重用的理解

對(duì)于單元格重用的理解

當(dāng)屏幕上滑出屏幕時(shí),系統(tǒng)會(huì)把這個(gè)單元格添加到重用隊(duì)列中,等待被重用,當(dāng)有新單元從屏幕外滑入屏幕內(nèi)時(shí),從重用隊(duì)列中找看有沒(méi)有可以重用的單元格,若有,就直接用,沒(méi)有就重新創(chuàng)建一個(gè)。

解決cell重用的問(wèn)題

UITableView通過(guò)重用單元格來(lái)達(dá)到節(jié)省內(nèi)存的目的,通過(guò)為每個(gè)單元格指定一個(gè)重用標(biāo)示(reuseidentifier),即指定了單元格的種類,以及當(dāng)單元格滾出屏幕時(shí),允許恢復(fù)單元格以便復(fù)用。對(duì)于不同種類的單元格使用不同的ID,對(duì)于簡(jiǎn)單的表格,一個(gè)標(biāo)示符就夠了。

如一個(gè)TableView中有10個(gè)單元格,但屏幕最多顯示4個(gè),實(shí)際上iPhone只為其分配4個(gè)單元格的內(nèi)存,沒(méi)有分配10個(gè),當(dāng)滾動(dòng)單元格時(shí),屏幕內(nèi)顯示的單元格重復(fù)使用這4個(gè)內(nèi)存。實(shí)際上分配的cell的個(gè)數(shù)為屏幕最大顯示數(shù),當(dāng)有新的cell進(jìn)入屏幕時(shí),會(huì)隨機(jī)調(diào)用已經(jīng)滾出屏幕的Cell所占的內(nèi)存,這就是Cell的重用。

對(duì)于多變的自定義Cell,這種重用機(jī)制會(huì)導(dǎo)致內(nèi)容出錯(cuò),為解決這種出錯(cuò)的方法,把原來(lái)的

UITableViewCell*cell = [tableview dequeueReusableCellWithIdentifier:defineString]修改為:UITableViewCell*cell = [tableview cellForRowAtIndexPath:indexPath];

這樣就解決掉cell重用機(jī)制導(dǎo)致的問(wèn)題

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容