14-RunLoop-01

一砰逻、RunLoop的認(rèn)識

二、RunLoop對象

RunLoop源碼:

三寡喝、RunLoop相關(guān)類

切換mode不會導(dǎo)致程序退出拯田。

1.CFRunLoopModeRef

  • sources0
處理觸摸事件
  • observer
觸摸事件
定時器事件
切換model

代碼如下:

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

//在線程中創(chuàng)建的runloop對象都是放在一個全局的字典中,例如:
//NSMutableDictionary *runloops;

void observeRunLoopActicities(CFRunLoopObserverRef observer, CFRunLoopActivity activity, void *info)
{
    switch (activity) {
        case kCFRunLoopEntry:
            NSLog(@"kCFRunLoopEntry");
            break;
        case kCFRunLoopBeforeTimers:
            NSLog(@"kCFRunLoopBeforeTimers");
            break;
        case kCFRunLoopBeforeSources:
            NSLog(@"kCFRunLoopBeforeSources");
            break;
        case kCFRunLoopBeforeWaiting:
            NSLog(@"kCFRunLoopBeforeWaiting");
            break;
        case kCFRunLoopAfterWaiting:
            NSLog(@"kCFRunLoopAfterWaiting");
            break;
        case kCFRunLoopExit:
            NSLog(@"kCFRunLoopExit");
            break;
        default:
            break;
    }
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
//    NSRunLoop *runloop;
//    CFRunLoopRef runloop2;
    
//    runloops[thread] = runloop;
    
//    NSRunLoop *runloop = [NSRunLoop currentRunLoop];
//    CFRunLoopRef runloop2 = CFRunLoopGetCurrent();
    
//    NSArray *array;
//    CFArrayRef arry2;
//
//    NSString *string;
//    CFStringRef string2;
    
//    NSLog(@"%p %p", [NSRunLoop currentRunLoop], [NSRunLoop mainRunLoop]);
//    NSLog(@"%p %p", CFRunLoopGetCurrent(), CFRunLoopGetMain());
    
    // 數(shù)組是有序的
//    NSMutableArray *array;
//    [array addObject:@"123"];
//    array[0];
    
    // 集合是無序的
//    NSMutableSet *set;
//    [set addObject:@"123"];
//    [set anyObject];
//
//    kCFRunLoopDefaultMode;
//    NSDefaultRunLoopMode;
//    NSLog(@"%@", [NSRunLoop mainRunLoop]);
    
//    self.view.backgroundColor = [UIColor redColor];
    
    // kCFRunLoopCommonModes默認(rèn)包括kCFRunLoopDefaultMode础锐、UITrackingRunLoopMode
    
    
    // 創(chuàng)建Observer
//    CFRunLoopObserverRef observer = CFRunLoopObserverCreate(kCFAllocatorDefault, kCFRunLoopAllActivities, YES, 0, observeRunLoopActicities, NULL);
//    // 添加Observer到RunLoop中
//    CFRunLoopAddObserver(CFRunLoopGetMain(), observer, kCFRunLoopCommonModes);
//    // 釋放
//    CFRelease(observer);
    
    // 創(chuàng)建Observer
    CFRunLoopObserverRef observer = CFRunLoopObserverCreateWithHandler(kCFAllocatorDefault, kCFRunLoopAllActivities, YES, 0, ^(CFRunLoopObserverRef observer, CFRunLoopActivity activity) {
        switch (activity) {
            case kCFRunLoopEntry: {
                CFRunLoopMode mode = CFRunLoopCopyCurrentMode(CFRunLoopGetCurrent());
                NSLog(@"kCFRunLoopEntry - %@", mode);
                CFRelease(mode);
                break;
            }
                
            case kCFRunLoopExit: {
                CFRunLoopMode mode = CFRunLoopCopyCurrentMode(CFRunLoopGetCurrent());
                NSLog(@"kCFRunLoopExit - %@", mode);
                CFRelease(mode);
                break;
            }
                
            default:
                break;
        }
    });
    // 添加Observer到RunLoop中
    CFRunLoopAddObserver(CFRunLoopGetMain(), observer, kCFRunLoopCommonModes);
    // 釋放
    CFRelease(observer);
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
//    [NSTimer scheduledTimerWithTimeInterval:3.0 repeats:NO block:^(NSTimer * _Nonnull timer) {
//        NSLog(@"定時器-----------");
//    }];
    
}

@end
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嗓节,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子皆警,更是在濱河造成了極大的恐慌拦宣,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鸵隧,居然都是意外死亡绸罗,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門豆瘫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來珊蟀,“玉大人,你說我怎么就攤上這事外驱∮模” “怎么了?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵昵宇,是天一觀的道長磅崭。 經(jīng)常有香客問我,道長瓦哎,這世上最難降的妖魔是什么砸喻? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮蒋譬,結(jié)果婚禮上割岛,老公的妹妹穿的比我還像新娘。我一直安慰自己犯助,他們只是感情好癣漆,可當(dāng)我...
    茶點故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著也切,像睡著了一般扑媚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上雷恃,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天疆股,我揣著相機(jī)與錄音,去河邊找鬼倒槐。 笑死旬痹,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的讨越。 我是一名探鬼主播两残,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼把跨!你這毒婦竟也來了人弓?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤着逐,失蹤者是張志新(化名)和其女友劉穎崔赌,沒想到半個月后意蛀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡健芭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年县钥,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片慈迈。...
    茶點故事閱讀 38,789評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡若贮,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出痒留,到底是詐尸還是另有隱情谴麦,我是刑警寧澤,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布伸头,位于F島的核電站细移,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏熊锭。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一雪侥、第九天 我趴在偏房一處隱蔽的房頂上張望碗殷。 院中可真熱鬧,春花似錦速缨、人聲如沸锌妻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仿粹。三九已至,卻和暖如春原茅,著一層夾襖步出監(jiān)牢的瞬間吭历,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工擂橘, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留晌区,地道東北人。 一個月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓通贞,卻偏偏與公主長得像朗若,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子昌罩,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,697評論 2 351

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

  • https://blog.ibireme.com/2015/05/18/runloop/ RunLoop 是 iO...
    SmallDe閱讀 695評論 0 51
  • 前言 RunLoop是iOS和OSX開發(fā)中非晨扌福基礎(chǔ)的一個概念,這篇文章將從CFRunLoop的源碼入手茎用,介紹Run...
    暮年古稀ZC閱讀 2,237評論 1 19
  • 轉(zhuǎn)載:http://www.cocoachina.com/ios/20150601/11970.html RunL...
    Gatling閱讀 1,436評論 0 13
  • 轉(zhuǎn)自http://blog.ibireme.com/2015/05/18/runloop 深入理解RunLoop ...
    飄金閱讀 976評論 0 4
  • RunLoop 的概念 一般來講遣总,一個線程一次只能執(zhí)行一個任務(wù)睬罗,執(zhí)行完成后線程就會退出。如果我們需要一個機(jī)制彤避,讓線...
    Mirsiter_魏閱讀 617評論 0 2