RunLoopでの使用シーンについて
2099 ワード
[NSRunLoop mainRunLoop];
CFRunLoopGetMain()
-
[NSRunLoop currentRunLoop];
CFRunLoopGetCurrent();
- RunLoop Mode
- Source: Source0 Source1
- Source0: port
- Source1: port , ,Source1 Source0
- Observer
RunLoop Observer: CFRunLoop ,OC API
```
CFRunLoopObserverRef observer = CFRunLoopObserverCreateWithHander(kCFAllocatorDefault,kCFRunLoopAllActivities,YES,0,^(CFRunLoopObserverRef observer,CFRunLoopActivitity activity){
});
```
observier, RunLoop ,Block RunLoop block
![Snip20160529_1.png](http://upload-images.jianshu.io/upload_images/2443652-36cd132036fd5aeb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
RunLoop
CFRunLoopAddObserver(CFRunLoopGetCurrent(),observer,kCFRunLoopDefaultMode);
RunLoop Observer
- RunLoop
- :
port RunLoop source
```
[[NSRunLoop currentRunLoop]addPort:[[NSPort alloc]init]forMode:NSDefaultRunLoopMode];
[[NSRunLoop currentLoop]run];
, run RunLoop
- :
while(1) RunLoop, , RunLoop source
```
while(1)
{
[[NSRunLoop currentLoop]run];
}
```
- RunLoop
- OC RunLoop , , , C
//C RunLoop
CFRunLoopRun();
//
CFRunLoopStop(self.runLoop);
RunLoop , ,
: