• 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);

    }

     

  • 相关阅读:
    金蝶KIS 13.0专业版破解方法破解安装流程 金蝶KIS 13.0专业版安装流程
    android利用zbar二维码扫描-(解决中文乱码及扫描区域定义)
    Android 电子邮件发送成功与失败的提示
    WebView的应用 持续积累
    [LeetCode]Implement Stack using Queues
    android开发 Fragment嵌套调用常见错误
    【剑指Offer学习】【面试题55:字符流中第一个不反复的字符】
    UIWebView的使用,简单浏览器的实现
    php 发送与接收流文件
    IHttpModule在webconfig中的注册
  • 原文地址:https://www.cnblogs.com/meixian/p/6391766.html
Copyright © 2020-2023  润新知