复杂的feed流通常是cell的高度不固定的,比如微博,微信,它们的高度需要根据内容计算的。滑动的时候动态计算肯定会影响速度,所以最好的做法是,在获取到数据的时候,就能计算所有cell的高度然后缓存起来。在heightForRowAtIndexPath方法里,只是根据indexpath去取高度就行了。
但是,这就要求我们实现只是根据数据就能计算cell高度的接口。如果,你不想实现这个接口,或者实现起来太复杂。也有别的折中方案,那就是第一次动态计算高度,然后缓存起来,比如把高度根据id放字典里。下次到这cell的时候就可以直接从字典里取出。这样做的好处就是每个cell的高度只动态计算一次。使用这种折中方案时最好实现
- (CGFloat)tableView:(UITableView *)tableView
estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
这个方法,防止所有动态计算都发生在加载那一瞬间