dequeueReusableCellWithIdentifier:
Returns a reusable table-view cell object located by its identifier.
- ( UITableViewCell ?*)dequeueReusableCellWithIdentifier:( NSString ?*) identifier
Parameters
- identifier
-
A string identifying the cell object to be reused. By default, a reusable cell’s identifier is its class name, but you can change it to any arbitrary value.
Return Value
A?
UITableViewCell
?object with the associated?
identifier
?or?
nil
?if no such object exists in the reusable-cell queue.
Discussion
For performance reasons, a table view’s data source should generally reuse
UITableViewCell
?objects when it assigns cells to rows in its
tableView:cellForRowAtIndexPath:
?method. A table view maintains a queue or list of
UITableViewCell
?objects that the table view’s delegate has marked for reuse. It marks a cell for reuse by assigning it a reuse identifier when it creates it (that is, in the
initWithFrame:reuseIdentifier:
?method of?
UITableViewCell
). The data source can access specific “template” cell objects in this queue by invoking the
dequeueReusableCellWithIdentifier:
?method. You can access a cell’s reuse identifier through its?
reuseIdentifier
?property, which is defined by?
UITableViewCell
.
Availability
- Available in iPhone OS 2.0 and later.
Related Sample Code
Declared In
?
UITableView.h
?
?
?
dequeueReusableCellWithIdentifier的運(yùn)行機(jī)制猜測(cè)
?
- static NSString *CheckMarkCellIdentifier = @"CheckMarkCellIdentifier";
- ????
- ????UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:<#(NSString *)identifier#>]
- ????
- ????if (cell == nil) {
- ????????<#statements#>
- ????}
?
書(shū)本上講解的很隨意,只是說(shuō)為了重復(fù)使用,和節(jié)省資源的內(nèi)部機(jī)制。
看文檔介紹的也比較籠統(tǒng),而代碼也只是訪問(wèn)到頭文件就終止了,所以才臆測(cè)一下實(shí)現(xiàn)的機(jī)制,還請(qǐng)高手們不論對(duì)于錯(cuò)都寫(xiě)點(diǎn)什么。其實(shí)我還是很疑惑的。
dequeueReusableCellWithIdentifier消息返回的是UITableViewCell對(duì)象,即是說(shuō)這是一個(gè)用來(lái)獲取UITableViewCell對(duì)象的消息,廢話。
之所以不說(shuō)是初始化一個(gè)對(duì)象,是因?yàn)樗赡芊祷豱il值,所以才要在下面補(bǔ)充一個(gè)如果cell為nil時(shí)的處理過(guò)程。
那么這個(gè)方法是不是可以解釋成為,從一個(gè)UITableViewCell對(duì)象池中獲取一個(gè)以Identifier參數(shù)命名的UITableViewCell對(duì)象。
如果在資源緊缺的時(shí)候,這個(gè)池會(huì)自動(dòng)清理多余的UITableViewCell對(duì)象,則可能無(wú)法返回對(duì)象,但如果資源豐富,則會(huì)保存一些UITableViewCell對(duì)象,在需要調(diào)用的時(shí)候迅速的返回,而不用創(chuàng)建.
?
當(dāng)TABLE一開(kāi)始加載的時(shí)候。。REUSABLEQUEEE中沒(méi)有任何元素。。當(dāng)TABLE向下滾動(dòng)時(shí),滑出TABLEVIEW的CELL被加入到隊(duì)列中。。下面用到相同的IDENTIFIER的CELL的時(shí)候就不用創(chuàng)建,直接 從QUEUE中拿出,修改相應(yīng)的屬性。。避免重復(fù)創(chuàng)建大量相同STYLE的CELL
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
