深入reloadData

1.runloop在執(zhí)行任務時循環(huán)速度很快狂魔,一秒鐘要循環(huán)多次蒜埋,當發(fā)現(xiàn)沒有內(nèi)核mach_msg事件后,進入睡眠最楷,每隔一分鐘循環(huán)一次整份。

2.監(jiān)聽reloadData完成

先來看看執(zhí)行reloadData都發(fā)生了什么。
reloadData是一個異步方法籽孙,更具體點來說烈评,是reloadData這個調(diào)用中包含了異步操作。
當我們reloadData的時候蚯撩,我們本意是刷新UITableView础倍,隨后會進入一系列UITableViewDataSource和UITableViewDelegate的回調(diào),其中有些是和reloadData同步發(fā)生的胎挎,有些則是異步發(fā)生的沟启。

  • 同步:
    tableView:numberOfRowsInSection:
  • 異步:
    tableView:cellForRowAtIndexPath:
  • tableView:heightForRowAtIndexPath:這個方法有些特殊,在同步和異步的時候都進行了回調(diào)犹菇。

一次runloop有兩個機會執(zhí)行GCD dispatch main queue中的任務德迹,分別在休眠前和被喚醒后。設置tableView layoutIfNeeded為YES揭芍,在即將進入休眠時執(zhí)行異步任務胳搞,重繪一次界面。

所以監(jiān)聽reloadData完成可以有兩種方法

方法一:喚醒時刻當作reloadData完成

dispatch_async(dispatch_get_main_queue(), ^{
    _isReloadDone = NO;
    [tableView reload]; //會自動設置tableView layoutIfNeeded為YES,意味著將會在runloop結束時重繪table
    dispatch_async(dispatch_get_main_queue(),^{
        _isReloadDone = YES;
    });
});

方法二:自定義UITableView肌毅,layoutSubviews之后當作reloadData完成(復雜筷转,但可以更好的理解方法一)

#import "DBTableView.h"

@interface DBTableView()

@property (nonatomic, copy) void (^reloadDataCompletionBlock)();

@end

@implementation DBTableView

- (void)reloadDataWithCompletion:(void (^)())completionBlock {
    self.reloadDataCompletionBlock = completionBlock;
    [super reloadData];
}

- (void)layoutSubviews {
    [super layoutSubviews];
    if (self.reloadDataCompletionBlock) {
        self.reloadDataCompletionBlock();
        self.reloadDataCompletionBlock = nil;
    }
}

@end

調(diào)用的時候

[self.tableView reloadDataWithCompletion:^{
     NSLog(@"完成刷新");
}];

在主線程中執(zhí)行dispatch_async(dispatch_get_main_queue()做了什么?

通常我們在子線程任務結束后使用dispatch_async(dispatch_get_main_queue()來回到主線程刷新UI,那么在主線程使用它是為了什么呢悬而?

情景:在快速滑動的時候reload

dispatch_async(dispatch_get_main_queue(), ^{
     [tableView reloadData]; 
});

加入主隊列后呜舒,會在合適的一次loop循環(huán)中進行reload操作,并且在這次loop中渲染cell笨奠,實現(xiàn)流暢的滑動袭蝗。
而沒有加入主隊列的reload,渲染cell的時機不固定般婆。一般發(fā)生跳屏到腥、白屏,就是因為需要等到tableView停下才會繼續(xù)渲染cell蔚袍。

參考鏈接:
iOS 事件處理機制與圖像渲染過程

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末乡范,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子啤咽,更是在濱河造成了極大的恐慌篓足,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件闰蚕,死亡現(xiàn)場離奇詭異栈拖,居然都是意外死亡,警方通過查閱死者的電腦和手機没陡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門涩哟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人盼玄,你說我怎么就攤上這事贴彼。” “怎么了埃儿?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵器仗,是天一觀的道長。 經(jīng)常有香客問我童番,道長精钮,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任剃斧,我火速辦了婚禮轨香,結果婚禮上,老公的妹妹穿的比我還像新娘幼东。我一直安慰自己臂容,他們只是感情好科雳,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著脓杉,像睡著了一般糟秘。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上球散,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天蚌堵,我揣著相機與錄音,去河邊找鬼沛婴。 笑死,一個胖子當著我的面吹牛督赤,可吹牛的內(nèi)容都是我干的嘁灯。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼躲舌,長吁一口氣:“原來是場噩夢啊……” “哼丑婿!你這毒婦竟也來了?” 一聲冷哼從身側響起没卸,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤羹奉,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后约计,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體诀拭,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年煤蚌,在試婚紗的時候發(fā)現(xiàn)自己被綠了耕挨。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡尉桩,死狀恐怖筒占,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蜘犁,我是刑警寧澤翰苫,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站这橙,受9級特大地震影響奏窑,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜屈扎,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一良哲、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧助隧,春花似錦筑凫、人聲如沸滑沧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽滓技。三九已至,卻和暖如春棚潦,著一層夾襖步出監(jiān)牢的瞬間令漂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工丸边, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留叠必,地道東北人。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓妹窖,卻偏偏與公主長得像纬朝,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子骄呼,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • *面試心聲:其實這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結起來就是把...
    Dove_iOS閱讀 27,139評論 30 470
  • OC的理解與特性 OC作為一門面向?qū)ο蟮恼Z言共苛,自然具有面向?qū)ο蟮恼Z言特性:封裝、繼承蜓萄、多態(tài)隅茎。它既具有靜態(tài)語言的特性...
    克魯?shù)吕?/span>閱讀 450評論 0 0
  • 來自網(wǎng)絡 序言 目前形勢,參加到iOS隊伍的人是越來越多嫉沽,甚至已經(jīng)到供過于求了辟犀。今年,找過工作人可能會更深刻地體會...
    用心在飛閱讀 829評論 5 4
  • 今天去連著看了《大護法》和《悟空傳》绸硕,劇透預警 先談觀影感受踪蹬,3D表現(xiàn)上,兩個作品都沒有特別有值得做成3D的感覺臣咖,...
    芳草將成宜人香閱讀 636評論 0 2
  • [00]Foreword The world of MCU-based embedded designs can ...
    simtech2win閱讀 403評論 0 0