iOS 高效的分頁加載實(shí)現(xiàn)示例
今天在review代碼的時(shí)候發(fā)現(xiàn)之前的tableview 和 collectview 的分頁加載邏輯還有優(yōu)化的余地,于是進(jìn)行了優(yōu)化。
一、tableview的分頁加載的代碼對(duì)比
沒有優(yōu)化之前的代碼如下:
[strongSelf.tableView.mj_footer endRefreshing]; [strongSelf.articleArr addObjectsFromArray:feedList]; [strongSelf.tableView reloadData];
優(yōu)化之后的代碼如下:
NSMutableArray *indexPaths = [NSMutableArray array]; [feedList enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { NSIndexPath *indexPath = [NSIndexPath indexPathForRow:(strongSelf.articleArr.count + idx) inSection:0]; [indexPaths addObject:indexPath]; }]; [strongSelf.tableView.mj_footer endRefreshing]; [strongSelf.articleArr addObjectsFromArray:feedList]; [strongSelf.tableView beginUpdates]; [strongSelf.tableView insertRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationNone]; [strongSelf.tableView endUpdates];
二、collectonview的分頁加載的代碼對(duì)比
沒有優(yōu)化之前的代碼如下:
[strongSelf.feedList addObjectsFromArray:feedList]; if (feedList.count < kPageSize) { [strongSelf.collectionView.mj_footer endRefreshingWithNoMoreData]; }else{ [strongSelf.collectionView.mj_footer resetNoMoreData]; } [strongSelf.collectionView reloadData];
優(yōu)化之后的代碼如下:
NSMutableArray *indexPaths = [NSMutableArray array]; [feedList enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { [indexPaths addObject:[NSIndexPath indexPathForItem:(strongSelf.feedList.count + idx) inSection:0]]; }]; [strongSelf.feedList addObjectsFromArray:feedList]; if (feedList.count < kPageSize) { [strongSelf.collectionView.mj_footer endRefreshingWithNoMoreData]; }else{ [strongSelf.collectionView.mj_footer resetNoMoreData]; } [strongSelf.collectionView insertItemsAtIndexPaths:indexPaths];
總結(jié):相比較之下,優(yōu)化之后看似代碼量增加了少許,但是從理論上分頁加載的性能更好了。之前分頁加載使用的全局刷新,優(yōu)化之后改用了局部刷新。從而性能得到提升。
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
IOS中Weex 加載 .xcassets 中的圖片資源的實(shí)例詳解
這篇文章主要介紹了IOS中Weex 加載 .xcassets 中的圖片資源的實(shí)例詳解的相關(guān)資料,希望通過本文介紹能幫助到大家,實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-08-08IOS實(shí)現(xiàn)微信授權(quán)登錄功能
微信是一個(gè)在開發(fā)中經(jīng)常會(huì)使用到的平臺(tái),比如微信登錄、授權(quán)、支付、分享。今天我們來看看如何在自己的應(yīng)用里面集成微信授權(quán),需要的朋友參考下吧2017-03-03iOS如何去掉導(dǎo)航欄(UINavigationBar)下方的橫線
本篇文章主要介紹了iOS如何去掉導(dǎo)航欄(UINavigationBar)下方的橫線,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-05-05Objective C從遠(yuǎn)程url下載圖片方法匯總
本文給大家分享了2則使用Objective C從遠(yuǎn)程url下載圖片的方法,都是個(gè)人項(xiàng)目中使用的,匯總下推薦給大家,有需要的小伙伴可以參考下。2015-05-05iOS經(jīng)驗(yàn)之初始化方法中不該設(shè)置self.view的屬性淺析
這篇文章主要給大家介紹了關(guān)于iOS經(jīng)驗(yàn)之初始化方法中不該設(shè)置self.view的屬性的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧2018-09-09解析iOS開發(fā)中的FirstResponder第一響應(yīng)對(duì)象
這篇文章主要介紹了解析iOS開發(fā)中的FirstResponder第一響應(yīng)對(duì)象,包括View的FirstResponder的釋放問題,需要的朋友可以參考下2015-10-10iOS 11更新后及iPhone X推出后工程中遇到的問題及適配方法
這篇文章主要介紹了iOS 11更新后及iPhone X推出后工程中遇到的問題及適配,需要的朋友可以參考下2017-10-10iOS測(cè)試手機(jī)APP的方法匯總:真機(jī)運(yùn)行,打ipa包,testFlighe,蒲公英
這篇文章主要介紹了iOS通常測(cè)試手機(jī)APP的四種方法:真機(jī)運(yùn)行,打ipa包,(testFlighe)郵件,蒲公英測(cè)試。需要的朋友可以參考下2022-12-12