zoukankan      html  css  js  c++  java
  • 07-GCD线程间的通讯

    GCD的线程间的通讯


    • 刷新UI必须在主队列中刷新
    • 如果在子队列中刷新可能会不显示刷新结果
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
        NSLog(@"--------");
        // 1.除主队列以外, 随便搞一个队列
        dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
        
        // 2.调用异步函数
        dispatch_async(queue, ^{
            // 1.下载图片
            NSURL *url = [NSURL URLWithString:@"http://pic.4j4j.cn/upload/pic/20130531/07ed5ea485.jpg"];
            NSData *data = [NSData dataWithContentsOfURL:url];
            // 2.将二进制转换为图片
            UIImage *image = [UIImage imageWithData:data];
            
            // 3.回到主线程更新UI
    //        self.imageView.image = image;
            /*
             技巧:
             如果想等UI更新完毕再执行后面的代码`设置图片完毕`, 那么使用同步函数
             如果不想等UI更新完毕就需要执行后面的代码`设置图片完毕`, 那么使用异步函数
             */
            dispatch_sync(dispatch_get_main_queue(), ^{
                self.imageView.image = image;
            });
            NSLog(@"设置图片完毕 %@", image);
        });
    }
    
    
    

    小技巧

    在解决死锁的时候 / 异步并发中调用主队列(调用方式的选择:同步/异步)
    • 如果想等UI更新完毕再执行后面的代码设置图片完毕, 那么使用同步函数
    • 如果不想等UI更新完毕就需要执行后面的代码设置图片完毕, 那么使用异步函数
    // 1.除主队列以外, 随便搞一个队列
        dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
        
    // 2.调用异步函数
        dispatch_async(queue, ^{
            // 1.下载图片
            NSURL *url = [NSURL URLWithString:@"http://pic.4j4j.cn/upload/pic/20130531/07ed5ea485.jpg"];
            NSData *data = [NSData dataWithContentsOfURL:url];
            // 2.将二进制转换为图片
            UIImage *image = [UIImage imageWithData:data];
    
            /*
             技巧:
             如果想等UI更新完毕再执行后面的代码`设置图片完毕`, 那么使用同步函数
             如果不想等UI更新完毕就需要执行后面的代码`设置图片完毕`, 那么使用异步函数
             */
            dispatch_sync(dispatch_get_main_queue(), ^{
                self.imageView.image = image;
            });
            NSLog(@"设置图片完毕 %@", image);
        });
    
  • 相关阅读:
    IIS 浏览aspx页面出现无法显示XML页的解决方法分享
    好看的导航菜单
    C# FileUpload使用过程遇到的问题
    javascript之数组操作
    浅谈.NET下的多线程
    项目分页通用页
    npoi
    react webpack.config.js的配置及注释
    JS 解析Json 方法
    json解析
  • 原文地址:https://www.cnblogs.com/KrystalNa/p/4780325.html
Copyright © 2011-2022 走看看