您的位置:首页 > 移动开发 > IOS开发

二十五,iOS GCD的使用

2017-03-02 11:09 309 查看
      GCD全称 Grand Central Dispatch ;

    是iOS中对多线程处理的方法之一(其他NSThread,NSOperationQueue,NSInvocationOperation)

   iOS系统对GCD的的使用方法大概有以下五种;

1.主线程执行

 dispatch_async(dispatch_get_main_queue(), ^{

    });

2.后台执行

 dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 

    });

3.延迟执行

double deleInseconds = 4.0;

        /*

         延迟更新 要用秒 乘以 NSEC_PER_SEC 宏定义如下

         #define NSEC_PER_SEC 1000000000ull

         #define NSEC_PER_MSEC 1000000ull

         #define USEC_PER_SEC 1000000ull

         #define NSEC_PER_USEC 1000ull

         */

        dispatch_time_t poptime = dispatch_time(DISPATCH_TIME_NOW, deleInseconds * NSEC_PER_SEC);

        dispatch_after(poptime, dispatch_get_main_queue(), ^{

         

        });

4.只执行一次

 static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

   

    });

5. 并行执行,并汇总

 dispatch_group_t group = dispatch_group_create();

    //并行执行线程一

    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{

        NSLog(@"1000====%@",[NSDate date]);

        sleep(100);

        string = @"10";

    });

    //并行执行线程二

    dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{

        number = @"5";

        NSLog(@"5=======%@",[NSDate date]);

    });

    //汇总结果

    dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{

        NSLog(@"------------- %f",string.floatValue + number.floatValue);

    });

具体代码参考github地址 :

https://github.com/wang6177ming123/GCDBlock
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS GCD 简单使用