利用runloop来优化滚动界面的卡顿

创建 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];

}

你可能感兴趣的:(利用runloop来优化滚动界面的卡顿)