
UITableViewController的指定初始化方法是initWithStyle:。調(diào)用initWithStyle:時(shí)要傳入一個(gè)類(lèi)型為UITableViewStyle的常數(shù),該常數(shù)決定了UITableView對(duì)象的風(fēng)格。
傳入tableView:numberOfRowsInSection:方法的section參數(shù)起什么作用?UITableView對(duì)象可以分段顯示數(shù)據(jù),每個(gè)表格段(section)包含一組獨(dú)立的行。



UITableView對(duì)象會(huì)將移出窗口的UITableViewCell對(duì)象放入U(xiǎn)ITableViewCell對(duì)象池,等待重用。當(dāng)UITableView對(duì)象要求數(shù)據(jù)源返回某個(gè)UITableViewCell對(duì)象時(shí),數(shù)據(jù)源可以先查看對(duì)象池。如果有未使用的UITableViewCell對(duì)象,就可以用新的數(shù)據(jù)配置這個(gè)UITableViewCell對(duì)象,然后將其返回給UITableView對(duì)象,從而避免創(chuàng)建新對(duì)象。這里還有一個(gè)問(wèn)題:因?yàn)橛袝r(shí)需要?jiǎng)?chuàng)建UITableViewCell的子類(lèi),用于實(shí)現(xiàn)特定的外觀或特性,所以UITableView對(duì)象可能會(huì)擁有不同類(lèi)型的UITableViewCell對(duì)象。
如果UITableViewCell對(duì)象池中的對(duì)象創(chuàng)建自不同的子類(lèi),那么UITableView對(duì)象就有可能得到錯(cuò)誤類(lèi)型的UITableViewCell對(duì)象。鑒于上述原因,必須確保UITableView對(duì)象能夠得到指定類(lèi)型的UITableViewCell對(duì)象,這樣才能確定返回的對(duì)象會(huì)擁有哪些屬性和方法。

每個(gè)UITableViewCell對(duì)象都有一個(gè)類(lèi)型為NSString的reuseIdentifier屬性。當(dāng)數(shù)據(jù)源向UITableView對(duì)象獲取可重用的UITableViewCell對(duì)象時(shí),可傳入一個(gè)字符串并要求UITableView對(duì)象返回相應(yīng)的UITableViewCell對(duì)象,UITableViewCell對(duì)象的reuseIdentifier屬性必須和傳入的字符串相同。按照約定,應(yīng)該將UITableViewCell或者UITableViewCell子類(lèi)的類(lèi)名用作reuseIdentifier。
重用UITableViewCell對(duì)象,意味著UITableView對(duì)象只需要?jiǎng)?chuàng)建少量的UITableViewCell對(duì)象,從而減少內(nèi)存的占用量,提升用戶(hù)界面的流暢性。
//直接創(chuàng)建UITableViewCell對(duì)象,不重用
UITableViewCell*cell=[[UITableViewCellalloc] initWithStyle: UITableViewCellStyleDefault
reuseIdentifier:@"UITableViewCell"];
//創(chuàng)建或重用UITableViewCell對(duì)象
UITableViewCell*cell=[tableViewdequeueReusableCellWithIdentifier: @"UITableViewCell"
forIndexPath:indexPath];
之前的代碼都是手動(dòng)創(chuàng)建UITableViewCell對(duì)象的。為了重用UITableViewCell對(duì)象,必須將創(chuàng)建的過(guò)程交由系統(tǒng)管理——需要告訴表視圖,如果對(duì)象池中沒(méi)有UITableViewCell對(duì)象,應(yīng)該初始化哪種類(lèi)型UITableViewCell對(duì)象。