zoukankan      html  css  js  c++  java
  • 【读书笔记】iOS-GCD-GCD与perfomSelector系方法比较

    一,GCD是导师步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现。开发者只需要定义想执行的任务并追加到适当的Dispatch Queue中,CGD就能生成必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可以统一管理,也可执行任务,这样就比以前的线程更有效率。

    二,在导入GCD之前,Cocoa框架提供了NSObject类的performSelectorInBackground:withObject实例方法和performSelectorOnMainThread实例方法等简单的多线程编程技术。

    三,performSelector系方法确实要比使用NSThread类进行多线程编程简单,但与之前使用GCD的源代码相比,结果一目了然。相比performSelector系方法,GCD更为简洁。如果使用GCD,不仅不必使用NSThread类或performSelector类方法这些过时的API,更可以通过CGD提供的系统级线程管理提高执行效率。

     

    GCD代码:

    复制代码
     dispatch_async(queue, ^{
            
            /*
            *长时间处理(如AR用画像识别,数据库访问)
            */
            dispatch_async(dispatch_get_main_queue(), ^{
                
                /*
                 *只在主线程可以执行的处理(如用户界面更新)
                 */
                
            });
            
        });
    复制代码

     

    performSelector代码:

    复制代码
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        
        //执行后台线程
        [self performSelectorInBackground:@selector(doWork) withObject:nil];
    }
    //后台线程处理
    -(void)doWork
    {
         /*
          *长时间处理(如AR画像识别,数据库访问)
          */
        
        //长时间处理结束,主线程使用其处理结果
        [self performSelectorOnMainThread:@selector(doneWork) withObject:nil waitUntilDone:NO];
    }
    //主线程处理方法
    -(void)doneWork
    {
        /*
         *只在主线程可以执行的处理,如用户界面更新
         */
    }
    复制代码

     

    参考资料:《Objective-C高级编程 iOS与OS X 多线程和内存管理》

     
    0
  • 相关阅读:
    2012 Multi-University Training Contest 8
    uva 11354最小生成树瓶颈路(lca算法实现)(rmq在多校二中有一道题)
    POJ 3164最小树形图
    uva11865 二分+最小树形图(朱刘算法)
    LA 5717枚举+最小生成树回路性质
    2014/3/9 长沙多校(第二次)
    zoj3759(待解决+算法木有问题+but需要java大数)
    ztr loves lucky numbers--hdu5676(DFS)
    C. Nearest vectors--cf598C(极角排序)
    D. Spongebob and Squares--cf599D(数学)
  • 原文地址:https://www.cnblogs.com/yang-guang-girl/p/5156024.html
Copyright © 2011-2022 走看看