// // ViewController.m // 运行循环RunLoop // // Created by xue on 2017/4/19. // Copyright © 2017年 liangxue. All rights reserved. // #import "ViewController.h" @interface ViewController () @property (nonatomic,strong) NSTimer *timer; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // NSTimer *timer = [NSTimer timerWithTimeInterval:1.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES]; // // [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; // _timer = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(timerMethod) userInfo:nil repeats:YES]; [self addRunloopObserver]; // Do any additional setup after loading the view, typically from a nib. } //什么也不干,只是为了让runloop起来 - (void)timerMethod{ } //千万不要做耗时操作 - (void)updateTimer{ static int num = 0; [NSThread sleepForTimeInterval:1.0]; NSLog(@"%@ %d",[NSThread currentThread],num++); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } // 监听runloop - (void)addRunloopObserver{ //获取当前runloop CFRunLoopRef runloop = CFRunLoopGetCurrent(); //定义一个上下文 CFRunLoopObserverContext context = { 0, (__bridge void *)self, &CFRetain, &CFRelease, NULL }; //定义一个观察者 callback回掉函数 static CFRunLoopObserverRef defaultObserver; defaultObserver = CFRunLoopObserverCreate(NULL, kCFRunLoopBeforeWaiting, YES, NSIntegerMax - 999, &CallBack, &context); //添加当前runloop 的观察者 CFRunLoopAddObserver(runloop, defaultObserver, kCFRunLoopDefaultMode); //释放 CFRelease(defaultObserver); } //runloop回掉函数 static void CallBack(){ NSLog(@"lalal"); } @end
运行循环RunLoop
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 学习RunLoop,主要就是要研究Core Foundation框架下的CFRunLoopRef类以及相关类,因为...
- 原文链接http://www.cnblogs.com/kenshincui/p/4186022.html 音频在i...