zoukankan      html  css  js  c++  java
  • Runloop 新的看法

    1.Runloop --运行循环

    Runloop能做的事情:

    1.让程序一直运行

    2.处理触摸事件:(UI交互,闹钟,网络等等)

    3.处理渲染事件:(每一次渲染的时候,重新加载所有的屏幕上的点)

     NSTimer *timer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];

        // NSDefaultRunLoopMode;  一般处理闹钟,网络

    // NSRunLoopCommonModes   处理用户UI交互(很好的处理时钟,网络在UI交互卡顿不动的情况)

     

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

    //    [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];//自动添加到运行池

    //更新UI是在主线程加载的,加载网络是在子线程加载的

    如果更新UI的时候也是个很耗时间的操作的时候,如何解决?

    1.第一次加载以后,可以将数据(图片,文字,头像)保存到本地,第二次直接通过本地加载。

    2.针对多个图片或者cell 很耗时的时候,可以通过Runloop每次加载一个,这样会大大节约时间

    如何解决:

    1.通过数组,装代码

    2.返回cell数据源,不加载图片(加载图片的代码放到数组)

    3.监听RunLoop(通过CFRunLoop)  ---一次循环就从数组拿代码执行

     

    OC的监听方法有:通知,代理,KVO

    C语言:通过函数指针监听

     

    //定义一个函数监察指针,回调函数

    static void callBack()

    {

       //处理回调方法

    }

    //添加runLoop

    -(void)defeafutRunLoopObsever

    {

     //获取当前的runLoop(C语言的)

        CFRunLoopRef runLoop = CFRunLoopGetCurrent();

        

        //定义一个上下文

        CFRunLoopObserverContext context = {

            0,

            (__bridge void *)(self),//观察者(self)要桥接

            &CFRetain,

            &CFRelease,

            NULL,

        };

        //定义一个观察者

        static CFRunLoopObserverRef defaultModleObesver;

        

        //创建观察者

        defaultModleObesver = CFRunLoopObserverCreate(NULL, kCFRunLoopBeforeWaiting, YES, NSIntegerMax -999, &callBack, &context);

       //添加当前RunLoop观察者

        CFRunLoopAddObserver(runLoop, defaultModleObesver, kCFRunLoopCommonModes);

        

        //c语言对于使用creat/new/copy 记得释放内存

        CFRelease(defaultModleObesver);

    }

     

  • 相关阅读:
    Assembly之instruction之CMP
    Assembly之Instruction之Byte and Word
    MSP430之section(1)
    MSP430之software development flow
    openMSP430之Custom linker script
    CDC之Synchronizers
    CDC之Metastability
    Embedded之Stack之三
    Embedded之Stack之二
    Embedded之Stack之一
  • 原文地址:https://www.cnblogs.com/meixian/p/6391766.html
Copyright © 2011-2022 走看看