创建 RunLoop 注意这里创建的runloop不是NSRunLoop
然后再 添加runloop的观察着
- (void)addRunLoop{
//获取当前的runloop
CFRunLoopRefcurrenRunloop=CFRunLoopGetCurrent();
CFRunLoopObserverContextcontext = {
0,
(__bridgevoid*)(self),
&CFRetain,
&CFRelease,
NULL
};
//设置观察者
CFRunLoopObserverRefobseve =CFRunLoopObserverCreate(nil,kCFRunLoopBeforeWaiting,YES,0, &callback, &context);
//添加观察者
//kCFRunLoopDefaultMode;
//kCFRunLoopCommonModes;
//两种模式可选择
CFRunLoopAddObserver(currenRunloop, obseve,kCFRunLoopCommonModes);
}
添加观察者的回调函数 这里的回调函数是C语言函数
voidcallback(CFRunLoopObserverRefobserver,CFRunLoopActivityactivity,void*info){
ViewController*VC = (__bridgeViewController*)(info);
if(VC.tasks.count==0) {
return;
}
myBlockblock = VC.tasks[0];
block();
[VC.tasksremoveObjectAtIndex:0];
}
网友评论