美文网首页iOS Coding程序员
GCD的一般使用(单例/多线程/3)

GCD的一般使用(单例/多线程/3)

作者: 渴wang | 来源:发表于2015-11-03 08:53 被阅读99次
    单例的实现模式/确保了访问对象的唯一性,并且使线程安全
    
    static NSObject *object = nil;
    // 在整个程序执行期间只运行一次
    - (IBAction)didClickOnceButton:(id)sender {
        static dispatch_once_t onceToken;
    //    NSObject *objc
    //    = nil;
    //    __block NSObject *object = objc;
        dispatch_once(&onceToken, ^{
            object = [[NSObject alloc]init];
        });
        NSLog(@"%@", object);
    
    }
    
    • 一个串行队列 (主队列)管理主线程的事务
     获得主队列 
    dispatch_queue_t mainQueue = dispatch_get_main_queue();
    在主队列执行任务
    dispatch_async(mainQueue, ^{   
        [NSLog:@"hello"];
     });```
    
    

    //***************3. 通过GCD的方式创建一个新的线程来异步加载图片***************//
    dispatch_queue_t queue = dispatch_queue_create("test", DISPATCH_QUEUE_CONCURRENT);
    dispatch_async(queue, ^{
    [self downLoadImage]; //回调 });
    }

    • (void)downLoadImage
      { NSURL *imageURL = [NSURL URLWithString:self.figureurl];
      imageData = [NSData dataWithContentsOfURL:imageURL];
      [_pathCover setAvatarImage:[UIImage imageWithData:imageData]];
      }
      // 返回主线程更新UI

    相关文章

      网友评论

        本文标题:GCD的一般使用(单例/多线程/3)

        本文链接:https://www.haomeiwen.com/subject/qvuqhttx.html