首页 > 其他 > 详细

【读书笔记】GCD-GCD与perfomSelector系方法比较

时间:2015-09-30 10:52:04      阅读:247      评论:0      收藏:0      [点我收藏+]

一,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 多线程和内存管理》

【读书笔记】GCD-GCD与perfomSelector系方法比较

原文:http://www.cnblogs.com/yang-guang-girl/p/4848484.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!