iOS-多线程基础 NSThread /GCD/NSOperation/Runloop


- (void)configurationWithModel:(HomeListModel *)model{

//    self.avatorImageView.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:model.url]]];

    self.titleLabel.text = model.jobTitleName;

    self.nameLabel.text= model.docName;

    self.deptLabel.text = model.deptName;

    self.goodatLabel.text = [NSString stringWithFormat:@"擅长: %@", model.docGoodAtNames];


    NSThread*downloadImageThread = [[NSThread alloc]initWithBlock:^{

        NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString:model.url]];

        UIImage*image = [UIImage imageWithData:imgData];

        [self performSelectorOnMainThread:@selector(setImageWithImage:) withObject:image waitUntilDone:YES];

    }];

    downloadImageThread.name=@"downloadImageThread";

    NSLog(@"%d", downloadImageThread.isMainThread);

    [downloadImageThread start];

}

- (void)setImageWithImage:(UIImage *)image {

    [self.avatorImageView setImage:image];

}



    dispatch_queue_global_t downloadImageQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

    dispatch_queue_main_t mainQueue = dispatch_get_main_queue();

    dispatch_async(downloadImageQueue, ^{

        NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString:model.url]];

        UIImage*image = [UIImage imageWithData:imgData];

        dispatch_async(mainQueue, ^{

            self.avatorImageView.image= image;

        });

    });

    dispatch_async(dispatch_get_global_queue(0, 0), ^{

        NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString:model.url]];

        UIImage*image = [UIImage imageWithData:imgData];

        dispatch_async(dispatch_get_main_queue(), ^{

            self.avatorImageView.image= image;

        });

    });



    NSOperationQueue *queue = [[NSOperationQueue alloc] init];

    NSBlockOperation *operation = [[NSBlockOperation alloc] init];

    [operation addExecutionBlock:^{

        NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString:model.url]];

        UIImage*image = [UIImage imageWithData:imgData];

        [[NSOperationQueue mainQueue] addOperationWithBlock:^{

            self.avatorImageView.image= image;

        }];

    }];

//    [queue addOperationWithBlock:^{

//        NSData *imgData = [NSData dataWithContentsOfURL:[NSURL URLWithString:model.url]];

//        UIImage *image = [UIImage imageWithData:imgData];

//        [[NSOperationQueue mainQueue] addOperationWithBlock:^{

//            self.avatorImageView.image = image;

//        }];

//    }];

    [queueaddOperation:operation];



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

推荐阅读更多精彩内容

  • 一.基本概念 计算机操作系统都有的基本概念,以下概念简单方式来描述。 进程: 一个具有一定独立功能的程序关于某个数...
    叶君臣阅读 1,930评论 0 1
  • https://www.cnblogs.com/jx66/p/5849741.html 大家都知道,在开发过程中应...
    emore阅读 1,261评论 0 0
  • 一、主队列介绍 主队列:是和主线程相关联的队列,主队列是GCD自带的一种特殊的串行队列,放在主队列中得任务,都会放...
    在这蓝色天空下阅读 3,034评论 1 6
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 12,192评论 16 22
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    余生动听阅读 13,586评论 0 11