NSRunLoop
其实它比较像Android的Looper每个线程中都有自己的Looper,只是主线程及UI不用自己创建系统已经帮我们创建好了。
而 NSRunLoop 就是它寄宿线程的 监督者 ,负责24小时监督它的 宿主 线程的一举一动。
一.作用
1.程序运行一直接受用户输入
2.决定何时处理何种Event
3.MessageQueue
二.组成
1.Source输入源
2.Observer观察者
3.定时器NSTimer
三.使用
~
CADisplayLink *cADisplayLink=[CADisplayLink displayLinkWithTarget:self selector:@selector(timerDoSelector)];
[cADisplayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:UITrackingRunLoopMode];//这样selector就会重复的周期性执行了
//停止执行
[cADisplayLink invalidate];
cADisplayLink=nil;
~
~~~
NSTimer *timer=[NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timerDoSelector) userInfo:nil repeats:YES];
//默认会把NSTimer放入到MainRunLooper中执行
NSTimer *timer2=[NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(timerDoSelector) userInfo:nil repeats:YES];
[[NSRunLoop mainRunLoop] addTimer:timer2 forMode:NSDefaultRunLoopMode];
[[NSRunLoop currentRunLoop] addTimer:timer2 forMode:UITrackingRunLoopMode];
[[NSRunLoop currentRunLoop] run];//同时让runLoop跑起来
~~~
接下来是核心动画的研究.