我正在研究一個iPhone應用程序,它具有一個非常大的UITableView與從網絡中獲取的數據,所以我試圖優化它的創建和使用。iPhone - dequeueReusableCellWithIdentifier用法
我發現dequeueReusableCellWithIdentifier非常有用,但是在看到很多使用這個源代碼的代碼之後,我想知道這個函數的用法是否合適。
這裏是人們通常做:
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"Cell"];
// Add elements to the cell
return cell;
這裏是我做的方式:
// The cell row
NSString identifier = [NSString stringWithFormat:@"Cell %d", indexPath.row];
UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:identifier];
if (cell != nil)
return cell;
cell = [[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:identifier];
// Add elements to the cell
return cell;
不同的是,人們使用相同標識符的每一個細胞,讓出列一個只能避免分配一個新的。
對我來說,排隊的重點是給每個單元格一個唯一的標識符,所以當應用程序要求已經顯示的單元格時,不需要添加分配和元素添加。
在精細我不知道這是最好的,「共同」的方法ceils表的內存使用細胞的確切數目也顯示,whislt我使用的方法似乎是因爲它使所有計算的青睞速度單元格,但會導致大量內存消耗(除非隊列中存在內部限制)。
我錯用這種方式嗎?還是取決於他的需求,它是否取決於開發者?
你說得對,用我的方法數組可以完成這項工作。 會有100個單元代表一次分配的「太多」大量內存嗎? – Jukurrpa 2010-05-28 13:03:56
那麼,我改變了常見的方法(這是一個行有很多子視圖時很複雜),並且除了較低的內存消耗,滾動整體看起來更平滑,我不知道爲什麼。 感謝您的建議! – Jukurrpa 2010-05-28 14:40:18
@progrmr ...謝謝...清理這個概念..它真的很好...我也在做同樣的錯誤.. :) – 2011-12-23 03:24:51