NSRunLoop--線程

NSRunLoop其實(shí)本質(zhì)就是死循環(huán)臂外;
作用:Runloop--運(yùn)行循環(huán)

  • 1.保證程序不退出
  • 2.負(fù)責(zé)監(jiān)聽事件庐冯、觸摸盈滴、時(shí)鐘欲账、網(wǎng)絡(luò)事件
    1. 如果沒(méi)有事件發(fā)生五鲫,就處于休眠狀態(tài)

引申一個(gè)問(wèn)題:循環(huán)和遞歸的區(qū)別

    1. 遞歸就是自己調(diào)用自己,每調(diào)用一次方法壓棧一次,相當(dāng)于在內(nèi)存開辟了一個(gè)空間,每次調(diào)用都開辟一個(gè)空間,會(huì)造成內(nèi)存空間溢出溺职,遞歸就結(jié)束了,循環(huán)沒(méi)事。
  • 2.遞歸是不確定循環(huán)次數(shù)的時(shí)候用,而for循環(huán)是知道循環(huán)次數(shù)浪耘;

具體使用

1.
NSTimer * timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerMethod) userInfo:nil repeats:YES];//雖然蘋果幫我們自動(dòng)加入了運(yùn)行循環(huán)乱灵,但是模式是普通模式。就造成處理UI模式式七冲,不能執(zhí)行普通模式(比如就會(huì)造成操作UI痛倚,timer停止的問(wèn)題)

2.手動(dòng)加入runloop
NSTimer * timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(timerMethod) userInfo:nil repeats:YES];
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
    [[NSRunLoop currentRunLoop] run];
/*
NSRunLoopMode 模式: 
1. 普通模式:NSDefaultRunLoopMode 
2.UITrackingRunLoopMode//UI模式比如拖拽的時(shí)候,才會(huì)調(diào)用timer癞埠,松手就不會(huì)調(diào)用timer事件  
3.占位模式NSRunLoopCommonModes //這個(gè)模式可以解決處理UI模型状原,同時(shí)處理普通模式
*/

3. GCD定時(shí)器(要注意的是,把dispatch_source_t timer變?yōu)槿肿兞浚┎蝗徊粫?huì)執(zhí)行Block回調(diào)
dispatch_queue_t queue = dispatch_get_main_queue();//dispatch_get_global_queue(0, 0)全局隊(duì)列
     _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
    dispatch_source_set_timer(_timer, DISPATCH_TIME_NOW,0.001 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
    dispatch_source_set_event_handler(_timer, ^{
        static NSInteger i =1;
        self.disPlayLabel.text= [ @(6 +i) stringValue];
        i++;
        NSThread * thread =[NSThread currentThread];
        NSLog(@"當(dāng)前線程===%@",thread);
    });
    dispatch_resume(_timer);

Runloop與線程

//想要保住線程苗踪,讓線程有執(zhí)行不完的任務(wù)颠区!線程就不會(huì)釋放了,而不是強(qiáng)引用
 //子線程
    NSThread * thread = [[NSThread alloc] initWithBlock:^{
        NSTimer * timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(timerMethod) userInfo:nil repeats:YES];
        [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
        
        //Runloop---一條線程上面的runloop默認(rèn)是不循環(huán),所以執(zhí)行run函數(shù)通铲,才能死循環(huán)
        [[NSRunLoop currentRunLoop] run];//死循環(huán)
        
        NSLog(@"來(lái)了");
    }];
    [thread start];

-(void) timerMethod{
    NSLog(@"come here");
    NSLog(@"timer 來(lái)了:%@",[NSThread currentThread]);
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    NSLog(@"主線程===%@",[NSThread currentThread]);
    [NSThread exit];//干掉主線程毕莱,但程序不會(huì)崩,其它線程一樣可以照常運(yùn)行颅夺,在iOS里面就會(huì)出現(xiàn)主線程被干掉朋截,界面卡死
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市吧黄,隨后出現(xiàn)的幾起案子部服,更是在濱河造成了極大的恐慌,老刑警劉巖拗慨,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件廓八,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡赵抢,警方通過(guò)查閱死者的電腦和手機(jī)剧蹂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)烦却,“玉大人宠叼,你說(shuō)我怎么就攤上這事∑渚簦” “怎么了冒冬?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)摩渺。 經(jīng)常有香客問(wèn)我窄驹,道長(zhǎng),這世上最難降的妖魔是什么证逻? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任乐埠,我火速辦了婚禮抗斤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘丈咐。我一直安慰自己瑞眼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布棵逊。 她就那樣靜靜地躺著伤疙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪辆影。 梳的紋絲不亂的頭發(fā)上徒像,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音蛙讥,去河邊找鬼锯蛀。 笑死,一個(gè)胖子當(dāng)著我的面吹牛次慢,可吹牛的內(nèi)容都是我干的旁涤。 我是一名探鬼主播,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼迫像,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼劈愚!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起闻妓,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤菌羽,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后由缆,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體注祖,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年犁功,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了氓轰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片婚夫。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡浸卦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出案糙,到底是詐尸還是另有隱情限嫌,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布时捌,位于F島的核電站怒医,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏奢讨。R本人自食惡果不足惜稚叹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧扒袖,春花似錦塞茅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至飒泻,卻和暖如春鞭光,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泞遗。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工惰许, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刹孔。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓啡省,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親髓霞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子卦睹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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

  • 1,NSObject中description屬性的意義方库,它可以重寫嗎?答案:每當(dāng) NSLog(@"")函數(shù)中出現(xiàn) ...
    eightzg閱讀 4,144評(píng)論 2 19
  • 本文將從以下幾個(gè)部分來(lái)介紹多線程结序。 第一部分介紹多線程的基本原理。 第二部分介紹Run loop纵潦。 第三部分介紹多...
    曲年閱讀 1,266評(píng)論 2 14
  • 這是AF2.x經(jīng)典的代碼: 首先我們要明確一個(gè)概念,線程一般都是一次執(zhí)行完任務(wù)寥院,就銷毀了劲赠。 而添加了runloop...
    有夢(mèng)想的老伯伯閱讀 2,001評(píng)論 5 13
  • 一、什么是runloop 字面意思是“消息循環(huán)秸谢、運(yùn)行循環(huán)”凛澎。它不是線程,但它和線程息息相關(guān)估蹄。一般來(lái)講塑煎,一個(gè)線程一次...
    WeiHing閱讀 8,139評(píng)論 11 111
  • 我不信 這中秋的豪熱 能將人的尊嚴(yán)蒸發(fā) 但我明明看到 某前領(lǐng)導(dǎo) 用大噪門證明著 活著只為 某筆獎(jiǎng)金 還有 偏激
    第一閑人閱讀 143評(píng)論 0 1