Runloop航夺?

1.何為runloop蕉朵,有什么用?

runloop 就是一個運行循環(huán)阳掐,用于保持程序的持續(xù)運行始衅,處理各種事件(觸摸事件,定時器等)缭保,節(jié)省cpu資源汛闸,提高性能(要讓馬兒跑,還要馬兒不吃草)

2.runloop的用法艺骂?

oc中有兩套API可以訪問和使用runloop

(1)Foundation

NSRunloop

//獲取當前線程的runloop

[NSRunloop currentRunloop];

//獲取主前程的runloop

[NSRunloop mainRunloop];

(2)Core Foundation

CFRunloopRef

CFRunLoopGetCurrent(); // 獲得當前線程的RunLoop對象CFRunLoopGetMain(); // 獲得主線程的RunLoop對象

3.線程與runloop

(1).每條線程都有唯一的與之對應(yīng)的RunLoop對象诸老。

(2).主線程的RunLoop已經(jīng)創(chuàng)建好了,而子線程的需要手動創(chuàng)建钳恕。(也就是說子線程的RunLoop默認是關(guān)閉的别伏,因為有時候開了個線程但卻沒有必要開一個RunLoop蹄衷,不然反而浪費了資源。 )

(3).RunLoop在第一次獲取時創(chuàng)建厘肮,在線程結(jié)束時銷毀愧口。

4.RunLoop相關(guān)類

CFRunLoopRef ? ? ? ? ? ? ? ?//

CFRunLoopModeRef ? ? ?//RunLoop的運行模式。

CFRunLoopSourceRef

CFRunLoopTimerRef

CFRunLoopObserverRef

1.CFRunLoopModeRef代表的是RunLoop的運行模式轴脐。

2.一個 RunLoop 包含若干個 Mode调卑,每個 Mode 又包含若干個 Source/Timer/Observer。

3.每次調(diào)用 RunLoop 的主函數(shù)時大咱,只能指定其中一個 Mode恬涧,這個Mode被稱作 CurrentMode。 4.如果需要切換 Mode碴巾,只能退出 Loop溯捆,再重新指定一個 Mode 進入。這樣做主要是為了分隔開不同組的 Source/Timer/Observer厦瓢,讓其互不影響提揍。?

CFRunLoopModeRef

kCFRunLoopDefaultMode //App的默認Mode,通常主線程是在這個Mode下運行

UITrackingRunLoopMode //界面跟蹤 Mode煮仇,用于 ScrollView 追蹤觸摸滑動劳跃,保證界面滑動時不受其他 Mode 影響

UIInitializationRunLoopMode // 在剛啟動 App 時第進入的第一個 Mode,啟動完成后就不再使用

GSEventReceiveRunLoopMode // 接受系統(tǒng)事件的內(nèi)部 Mode浙垫,通常用不到

kCFRunLoopCommonModes //這是一個占位用的Mode刨仑,不是一種真正的Mode ?

5.使用runloop注意點

在NSTimer中使用runloop 是時的用法

- (IBAction)ButtonDidClick:(id)sender {

NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(timerTest) userInfo:nil repeats:YES];

[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

}

- (void)timerTest {

NSLog(@"timerTest----");

}

在scrollview中使用runloop時的用法:使用NSRunLoopCommonModes

NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(timerTest) userInfo:nil repeats:YES];

[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];


參考鏈接:http://www.reibang.com/p/2d3c8e084205

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末夹姥,一起剝皮案震驚了整個濱河市杉武,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌辙售,老刑警劉巖轻抱,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異旦部,居然都是意外死亡祈搜,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門士八,熙熙樓的掌柜王于貴愁眉苦臉地迎上來容燕,“玉大人,你說我怎么就攤上這事曹铃。” “怎么了捧杉?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵陕见,是天一觀的道長秘血。 經(jīng)常有香客問我,道長评甜,這世上最難降的妖魔是什么灰粮? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮忍坷,結(jié)果婚禮上粘舟,老公的妹妹穿的比我還像新娘。我一直安慰自己佩研,他們只是感情好柑肴,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著旬薯,像睡著了一般晰骑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上绊序,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天硕舆,我揣著相機與錄音,去河邊找鬼骤公。 笑死抚官,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的阶捆。 我是一名探鬼主播凌节,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼趁猴!你這毒婦竟也來了刊咳?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤儡司,失蹤者是張志新(化名)和其女友劉穎娱挨,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體捕犬,經(jīng)...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡跷坝,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了碉碉。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片柴钻。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖垢粮,靈堂內(nèi)的尸體忽然破棺而出贴届,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布毫蚓,位于F島的核電站占键,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏元潘。R本人自食惡果不足惜畔乙,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望翩概。 院中可真熱鬧牲距,春花似錦、人聲如沸钥庇。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽上沐。三九已至皮服,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間参咙,已是汗流浹背龄广。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蕴侧,地道東北人择同。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像净宵,于是被迫代替她去往敵國和親敲才。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

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

  • 1 Runloop機制原理 深入理解RunLoop http://www.cocoachina.com/ios/2...
    Kevin_Junbaozi閱讀 3,983評論 4 30
  • 基本概念 進程 進程是指在系統(tǒng)中正在運行的一個應(yīng)用程序择葡,而且每個進程之間是獨立的紧武,它們都運行在其專用且受保護的內(nèi)存...
    小楓123閱讀 886評論 0 1
  • 一、什么是runloop 字面意思是“消息循環(huán)敏储、運行循環(huán)”阻星。它不是線程,但它和線程息息相關(guān)已添。一般來講妥箕,一個線程一次...
    WeiHing閱讀 8,109評論 11 111
  • 概述 RunLoop作為iOS中一個基礎(chǔ)組件和線程有著千絲萬縷的關(guān)系,同時也是很多常見技術(shù)的幕后功臣更舞。盡管在平時多...
    陽明先生_x閱讀 1,092評論 0 17
  • RunLoop的基本了解 **1 . RunLoop字面的意思 : **運行循環(huán) / 跑圈 **2 . 基本作用 ...
    Mario_ZJ閱讀 505評論 1 3