GCD简单用法
/*! * @brief GCD方法 */ - (void)GCDMethod { //后台执行 dispatch_async(dispatch_get_global_queue(0, 0), ^{ }); //主线程执行 dispatch_async(dispatch_get_main_queue(), ^{ }); //一次性执行 static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ }); //延迟几秒 double delayInSeconds = 2.0; dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC); dispatch_after(popTime, dispatch_get_main_queue(), ^{ //[self CommonMethod1]; }); //高级用法让后台 2 个线程并行执行,然后等 2 个线程都结束后,再汇总执行结果。这个可以用 dispatch_group, dispatch_group_async 和 dispatch_group_notify 来实现, dispatch_group_t group = dispatch_group_create(); dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{ [self CommonMethod1]; }); dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{ [self CommonMethod2]; }); dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{ [self CommonMethod1]; }); } /*! * @brief 案例测试 */ - (void)GCDEmgTest{ dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ NSURL *url = [NSURL URLWithString:@"http://www.youdao.com"]; NSError *error; NSString *data = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error]; if (data != nil) { dispatch_async(dispatch_get_main_queue(), ^{ [self CommonMethod1]; //NSLog(@"%@",data); }); } }); } - (void)CommonMethod1 { static NSInteger i = 1; NSLog(@"CommonMethod1第%ld葫芦娃",++i); } - (void)CommonMethod2 { static NSInteger i = 2; NSLog(@"CommonMethod2第%ld葫芦娃",++i); }