// // 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...