利用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];

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容