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取出来,修改显示内容即可。