創(chuàng)建 RunLoop 注意這里創(chuàng)建的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);
}
添加觀察者的回調(diào)函數(shù) 這里的回調(diào)函數(shù)是C語言函數(shù)
voidcallback(CFRunLoopObserverRefobserver,CFRunLoopActivityactivity,void*info){
ViewController*VC = (__bridgeViewController*)(info);
if(VC.tasks.count==0) {
return;
}
myBlockblock = VC.tasks[0];
block();
[VC.tasksremoveObjectAtIndex:0];
}