iOS學習心得——UITableViewCell的複用

來源:互聯網
上載者:User

標籤:

UITableView是在iOS開發中最常用的控制項之一。我的第一篇學習心得獻給它了        UITableView是由一行一行的UITableViewCell構成的。        首先想這樣一個問題:現在用UITableView去做一個連絡人清單,如果我有10個100個連絡人,那我可以建10個100    個UITableViewCell,但是如果有一千一萬個呢,建立這麼多Cell是不是會很影響手機的效能並且造成不好的使用者體驗呢?        因此,蘋果官方給出的解決方案是採用複用機制。        什麼是複用機制?簡單點回答:如果有我就用,沒有我就建立。就比如吃飯需要用筷子,如果現在我家裡有筷子當然我就用家裡的筷子,如果家裡沒有筷子我就去買筷子。買了筷子當然不會用一次,買了之後下次就是用買的筷子。當然這個例子不是特別恰當,領會精神為主。說不用筷子用勺子或者用一次性筷子的我不想看見你們。        來看看UITableViewCell建立的標準代碼:    static NSString *CellTableIdentifier = @"only";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIdentifier];
    if (cell == nil) {
    cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellTableIdentifier] autorelease];
}我們這樣來理解:如果有100行cell,根據cell高度和螢幕高度,我們每次只能顯示10行cell,我們在滑動螢幕時,我們已經建立的cell會被劃沒看不見,但是它們並沒有消失,而是相當於進入一個複用的隊列。然後當需要建立cell的時候,先到這個複用隊列裡看看,如果有的話,我們就去複用隊列裡取出這個cell使用,如果沒有的話我們才去真正的建立一個,這樣就避免了多次重複的建立UITableViewCell,對記憶體空間的使用起到了很好的控製作用。  static NSString *CellTableIdentifier = @"only";        這行代碼定義了一個靜態字串,用來當做cell的標識,static 關鍵字保證了唯一性UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellTableIdentifier];        接下來就該建立cell了。根據我們的邏輯,如果複用隊列中有可用的cell的話,我們是優先使用的,因此,我們首先要去複用隊列中尋找是否有我們需要的可用的cell,所以當前的tableView調用dequeueReusableCellWithIdentifier方法,參數就是我們定義的標識。如果複用隊列中有可用的cell,那麼傳回值就是這個可用的cell,如果沒有的話返回的是個nil。         第一次我們什麼都沒有, 所以必然返回的是nil,因而進入到if的判斷條件中,在這裡,才是我們真正的的第一次去建立cell。cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellTableIdentifier] autorelease];        可以看到,我們在記憶體中為cell開闢了新的空間,產生新的cell,同時為cell附上它專屬的標識符,在它進入到複用隊列裡以後,我們通過標識符來尋找我們所需要的cell。

iOS學習心得——UITableViewCell的複用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.