static NSString *resuseId=@"cell"; UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:resuseId]; if (!cell) { cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:resuseId]; }
當tableView初次加載時,系統會每次進入到cellforRow方法。并且會優先向重用隊列中取Cell。如果存在resuseId=@"cell"的Cell時,系統就不會再開辟空間創建Cell了。由于是首次加載,肯定不存在Cell,所以系統會開辟空間創建10個Cell(假如一個屏幕正好可以看見10個Cell)。那么當用戶向上滑動時,最上方的Cell還沒有劃出(滑出的話,系統不會銷毀Cell 而是根據resuseId將其放入重用隊列),但是新的Cell已經需要被顯示了,所以新的Cell在重用隊列中找不到可重用的Cell,只能再次創建。如果用戶繼續向上滑動,第一個Cell滾粗屏幕并加入重用隊列,新進來的Cell 完全顯示。當繼續滾動時,下一個Cell也要進來了,但是此時重用隊列中已經有可從用的Cell了,所以這個Cell不需要再開辟空間了,只需要將可從用Cell取出來,修改顯示內容即可。
新聞熱點
疑難解答