作者回复: 是的,只要有刷新的操作就可以。首先刷新的时机有几个,比如点击之后,或者重新在屏幕展示时,这两个区别也比较明显,能直观的观察到不同。当然在刷新的时候也要尽量避免使用reloadData,而使用reload相应的indexpath,以此提高性能,并且减少一些由于cell重用带来的UI bug风险
作者回复: 两个都是时序的问题哈
第一个问题:cell.news = model;这句代码应该在if (!cell)这个判断之后,因为初始化的时候没有cell,只有初始化alloc之后才会有cell,之后的布局才是有效的。对应的滚动之后能出现,因为使用的是重用的cell,所以这句代码可以被有效的执行。
第二个问题,同样是时序的问题 [self.listload addObserver:self forKeyPath:@"dataSource" options:NSKeyValueObservingOptionNew context:nil];这句话应该在 [self.listload loadListData];之前,因为有缓存的时候调用loadListData之后dataSource就已经赋值,之后添加addObserver是无效的,第一次有效是因为异步的有网络请求,所以真正赋值dataSource的时候addObserver已经执行。