美文网首页
Runloop的理解和应用场景

Runloop的理解和应用场景

作者: 小码嘟嘟 | 来源:发表于2017-08-25 14:29 被阅读16次

一直没有时间去总结一下关于runloop的知识点,好吧,主要是因为太懒以及严重的拖延症,如果你有治疗拖延症的秘方,请给我在下面留言,哈哈。话不多说,开始今天的主题

先说说runloop的作用

1.保证程序持续运行,就是让程序一直保持活跃状态不会退出

2.处理App中的各种事件,如视图滚动,触摸,拖拽,定时器等等

3.节省CPU资源,提高程序的性能(这个后面会说到)

如何获取runloop

//OC获取

1. NSRunLoop *runloop = [NSRunLoop currentRunLoop];

//C语言获取

2.CFRunLoopRef runRef = CFRunLoopGetCurrent();

Runloop的应用

1.定时器和视图滚动

我想这个大部分人都遇到过,我们常常会用到首页的轮播图,它包含了定时器和scrollView,一般情况下他们都处于默认模式下,如果同时开启定时器和滚动视图,定时器就会停止,这是因为当前的runloop模式已经切换到UITrackingRunLoopMode了,如果要解决它,我们可以获取当前的runloop,将定时器添加进去,并把模式设置为NSRunLoopCommonModes,就能解决这个问题,上代码:

           //NSTimer 调用了scheduledTimer方法,那么会自动添加到当前的runloop里面去,而且runloop的运行模式kCFRunLoopDefaultMode,切换模式后定时器就不工作了

          NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self   selector:@selector(run) userInfo:nil repeats:YES];

        //更改模式

         [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

2.保证子线程一直存活

3.TableView的卡顿问题

TableView卡顿环境分析:

tableView加载过多的高清大图,Runloop不只处理iOS事件,渲染图形也是runloop处理的。

而渲染图形的UI操作必须在主线程中,不能开辟线程进行图形处理。

在拖动tableView的时候,Runloop要处理拖动事件,还要处理过多图片渲染,而造成卡顿。

解决卡顿分析:

1、Runloop在一次循环渲染图片过多,那就让Runloop一次处理一张图片

2、将处理图片的代码放在block中,然后加入数组中,处理几次加入几次。

3、我们只需要渲染,tableView显示的图片,显示图片有最大个数。移开屏幕或者不处理的从队列数组里删去。

下面是domo地址:

https://github.com/chenmengxuan2/Runloop.git

相关文章

  • iOS开发经验(18)-Runloop

    目录 Runloop RunLoop 与线程 个人理解总结 应用场景 1. 什么是RunLoop 基本作用 保持程...

  • Runloop的理解和应用场景

    一直没有时间去总结一下关于runloop的知识点,好吧,主要是因为太懒以及严重的拖延症,如果你有治疗拖延症的秘方,...

  • RunLoop -- 相关问题的总结

    1、RunLoop在实际场景的应用 RunLoop -- 在实际开发中的应用 2、RunLoop内部实现逻辑 Ru...

  • RunLoop面试题

    1、什么是RunLoop?2、开发中如何使用RunLoop?什么应用场景?3、RunLoop和线程有什么关系?4、...

  • runloop

    1.RunLoop的应用Runloop应用 2.深入理解RunLoop 2.动态计算UITableViewCell...

  • runloop场景应用

    应用场景举例:主线程的 RunLoop 里有两个预置的 Mode:kCFRunLoopDefaultMode 和 ...

  • NSRunLoop

    【iOS程序启动与运转】- RunLoop个人小结 RunLoop总结:RunLoop的应用场景(三) 走进Run...

  • iOS RunLoop

    RunLoop 的应用场景: RunLoop在系统中应用 1.自动释放池。 2.NSTimer 3.Perform...

  • RunLoop

    详情见: iOS中的RunLoop 1、什么是RunLoop?2、开发中如何使用RunLoop?什么应用场景?3、...

  • RunLoop的基本理解和应用

    ios中的runloop简而言之就是一个管理线程的对象,想一下, 我们开发的App为什么能在不被杀死的情况下可以响...

网友评论

      本文标题:Runloop的理解和应用场景

      本文链接:https://www.haomeiwen.com/subject/txpsdxtx.html