zoukankan      html  css  js  c++  java
  • iOS子线程更新UI的两种方法

    http://blog.csdn.net/libaineu2004/article/details/45368427

    方法1:performSelectorOnMainThread
    [self performSelectorOnMainThread:@selector(updateUI:) withObject:image waitUntilDone:NO];


    方法2:dispatch_async(dispatch_get_main_queue(), ^{ ... })

    1. dispatch_async(dispatch_get_global_queue(0, 0), ^{  
    2.     // 处理耗时操作的代码块...  
    3.       
    4.     //通知主线程刷新  
    5.     dispatch_async(dispatch_get_main_queue(), ^{  
    6.         //回调或者说是通知主线程刷新,  
    7.     });  
    8.       
    9. });  

    dispatch_async开启一个异步操作,第一个参数是指定一个gcd队列,第二个参数是分配一个处理事物的程序块到该队列。

    dispatch_get_global_queue(0, 0),指用了全局队列。

    一般来说系统本身会有3个队列。global_queue,current_queue,以及main_queue.

    获取一个全局队列是接受两个参数,第一个是我分配的事物处理程序块队列优先级。分高低和默认,0为默认2为高,-2为低

    [cpp] view plaincopy
     
     
    1. #define DISPATCH_QUEUE_PRIORITY_HIGH     2  
    2. #define DISPATCH_QUEUE_PRIORITY_DEFAULT  0  
    3. #define DISPATCH_QUEUE_PRIORITY_LOW     (-2)  

    处理完事物后,需要将结果返回给或者是刷新UI主线程,同样,和上面一样,抓取主线程,程序块操作。

  • 相关阅读:
    MySQL主从复制的作用?
    MySQL的逻辑架构
    SQL语句的执行流程
    Count(*)在不同引擎的实现方式
    视图
    MySQL经典练习题(五)
    pyinstaller基本操作
    git基本操作
    Ubuntu安装tensorflow
    ScrollView can host only one direct child
  • 原文地址:https://www.cnblogs.com/zxykit/p/5663733.html
Copyright © 2011-2022 走看看