GCD(Grand Central Dispatch)是iOS实现多线程的常用方式。在iOS中实现多线程主要由3种方式:
- NSTread
- Cocoa框架的NSOperation
- GCD
其中GCD是抽象层次最高、使用最方便的,因此在iOS编程中,我们主要使用的是GCD技术
多线程一般应用时在图片加载、网络访问等方面,通过异步加载线程来处理耗时的图片加载和网络数据获取过程,异步线程函数
dispatch_async(dispatch_queue_t,void(^)(void))
其中第一个参数是一个类型为dispatch_queue_t线程,第二个参数是一个传入该线程的事件处理block
应用程序主动创建了2个进程
- 主进程:dispatch_get_main_queue
- ConcurrentQueue:disptch_get_global_queue(TYPE,0)
其中ConcurrentQueue根据不同的TYPE有不同的线程优先级
#define DISPATCH_QUEUE_PRIORITY_HIGH 2
#define DISPATCH_QUEUE_PRIORITY_DEFAULT 0
#define DISPATCH_QUEUE_PRIORITY_LOW -2
异步GCD的使用方式一般为
dispatch_queue_t my_dispatch_queue_t = dispatch_queue_create("myQueue",NULL);
dispatch_async(my_dispach_queue_t,^{
//执行异步数据处理,如图片获取
dispatch_async(dispatch_get_main_queue(),^{
//获取主线程,从而在主线程中更新界面,如图片显示
});
});