使用GCD

代码块只执行一次

(1)创建单例

+ (instancetype)cacher {

    static MHPCacher*cacher =nil;

    static dispatch_once_tonceToken;

    dispatch_once(&onceToken, ^{

        cacher = [MHPCachernew];

    });

    returncacher;

}

(2)防止重复执行代码块,如点击事件

static dispatch_once_t disOnce;

dispatch_once(&disOnce,^ {

    if([_delegate respondsToSelector:@selector(rewardDetailHeaderBtnTouchDelegateSelector:)]) {            

    [_delegate rewardDetailHeaderBtnTouchDelegateSelector:1001];

    }

});

延时

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.7* NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

    CHPChildController vc =self.childViewControllers[self.selectedButton.tag-1];

    vc.loadPage =1;

    [vc requestListData];

});

网络请求队列

            dispatch_group_tgroup =dispatch_group_create();

            dispatch_queue_t q = dispatch_get_global_queue(0, 0);

            dispatch_group_enter(group);

            for(NSMutableDictionary*parameDicinpostArray) {

                dispatch_group_async(group, q, ^{

                    [AFHttp requestWihtMethod:MyRequestMethodTypePost url:@"api/Objects/newPraise" params:parameDic success:^(id response) {

                        NSLog(@"执行完成%@", parameDic);

                        //删除对应的数据

                        NSString*oidStr = [NSStringstringWithFormat:@"%@",parameDic[@"oId"]];

                        [[MHPCachercacher]clearCacheWith:PraiseTypeAndid:oidStr];

                    }failure:^(NSError*err) {

                    }];

                });

            }

            dispatch_group_notify(group, dispatch_get_main_queue(), ^{

                NSLog(@"所有队列完毕 %@", [NSThreadcurrentThread]);

                dispatch_group_leave(group);

            });

异步加载图片回到主线程刷新UI

__weak __typeof (self)weakSelf = self; dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

       NSURL *url = [NSURL URLWithString:adModel.sharePic];        

        weakSelf.shareImage = [UIImage imageWithData:[NSData dataWithContentsOfURL:url]];

        dispatch_async(dispatch_get_main_queue(), ^{

        self.shareImageView.image = weakSelf.shareImage;

});

});

创建定时器

-(void)gcdTimer{

    //定义队列

//声明

@property (nonatomic, strong) dispatch_source_t timer;

//创建

-(void)createGCDTimer{

    dispatch_queue_t queue = dispatch_get_global_queue(0, 0);

    //创建定时器

    self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER,0,0, queue);

    dispatch_time_tstart =DISPATCH_TIME_NOW;        //当前时间

    dispatch_time_tinterval =1.0*NSEC_PER_SEC;    //间隔时间  --秒

    //设置定时器

    dispatch_source_set_timer(self.timer, start, interval,0);

    //设置回调

    dispatch_source_set_event_handler(self.timer, ^{

        NSLog(@"-------%@",[NSThread currentThread]);

        [selfcountDownTimerSelector];

    });

}

//使用

            dispatch_resume(self.timer);



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,835评论 8 265
  • 本文用来介绍 iOS 多线程中 GCD 的相关知识以及使用方法。这大概是史上最详细、清晰的关于 GCD 的详细讲...
    花花世界的孤独行者阅读 3,452评论 0 1
  • iOS中GCD的使用小结 作者dullgrass 2015.11.20 09:41*字数 4996阅读 20199...
    DanDanC阅读 4,505评论 0 0
  • ~~态度的关键所在,是一个心态的平衡关系,维系着所有,想与做,是一个人的认知觉悟,有些事无需多想,感知的感觉,无需...
    泊舟静阅读 1,183评论 0 0
  • 作者 : 曾涤尘 归来 小燕子归来, 仿佛 昨天 今日, 体温带着 春天的香味, 呼叫 呻吟在 小小的巢穴里。 ...
    体贴工坊阅读 3,666评论 1 2