分析:
reloadData是一个异步方法,并不会等待UITableView或者UICollectionView(后面统称listView)真正刷新完毕后才执行后续代码,而是立即执行后续代码。我们执行reloadData的本意是刷新listView,随后会进入一系列的DataSource和Delegate回调,有些是和reloadData同步发生的,有些是异步发生的。
同步:numberOfSectionsInCollectionView和numberOfItemsInSection
异步:cellForItemAtIndexPath
同步+异步:sizeForItemAtIndexPath
问题:
由于cell复用的原因,直接在reloadData后执行代码是有可能出问题的。比如在reloadData前保留了一个cell,在reloadData后,对这个cell(已经不是原来的cell了)进行某些操作,会出现一些异常问题。