GCD
Grand Central Dispatch
大中枢派发。//感觉类似 android handler 但是好像更强大的样子
用于将BLOCK 放到其他线程中执行。
使用C语言。 并且 队列执行完 需要手动release(队列名)。
举例:适用于从网络获取数据。并且更新ui(更新UI使用GDC的dispath_async(dispatch_get_mainqueue(),^{block内容}) 此段代码含义为 在主线程队列执行 block内容)
demo:
一个通过gdc获取网络图片并且刷新ui的demo
- (void)viewWillAppear:(BOOL)animated
{
dispatch_queue_t downloadQueue = dispatch_queue_create("xxx", NULL);
//创建队列
dispatch_async(downloadQueue,^{
执行内容
dispatch_async(dispatch_get_main_queue(), ,^{需要在主线程执行的内容})
刷新ui需要放到主线程
});
//执行(异步,执行线程为队列所在进程)
}
注:
dispatch_async(”队列名,string[非NSString C语言]“,block内容)。
异步执行时 所在线程名,为队列名线程[DEMO的话就在名为”XXX“线程];
=======================
Grand Central Dispatch (GCD)是Apple开发的一个多核编程的较新的解决方法。在Mac OS X 10.6雪豹中首次推出,并在最近引入到了iOS4.0。
GCD是一个替代诸如NSThread等技术的很高效和强大的技术。GCD完全可以处理诸如数据锁定和资源泄漏等负责的异步编程问题。
GCD可以完成很多事情,但是该文仅关注在iOS应用中实现多线程所需的一些基础知识。
在开始之前,需要理解是要提供给GCD队列的是代码块,用于在系统或者用户创建的的队列上调度运行。
声明一个队列
如下会返回一个用户创建的队列:
dispatch_queue_t myQueue = dispatch_queue_create("com.iphonedevblog.post", NULL);
其中,第一个参数是标识队列的,第二个参数是用来定义队列的参数(目前不支持,因此传入NULL)。
执行一个队列
如下会异步执行传入的代码:
dispatch_async(myQueue, ^{ [self doSomething]; });
其中,首先传入之前创建的队列,然后提供由队列运行的代码块。
声明并执行一个队列
如果不需要保留要运行的队列的引用,可以通过如下代码实现之前的功能:
dispatch_async(dispatch_queue_create ("com.iphonedevblog.post", NULL), ^{ [self doSomething]; });
暂停一个队列
如果需要暂停一个队列,可以调用如下代码。暂停一个队列会阻止和该队列相关的所有代码运行。
dispatch_suspend(myQueue);
恢复一个队列
如果暂停一个队列不要忘记恢复。暂停和恢复的操作和内存管理中的retain和release类似。调用dispatch_suspend会增加暂停计数,而dispatch_resume则会减少。队列只有在暂停计数变成零的情况下才开始运行。dispatch_resume(myQueue);
从队列中在主线程运行代码
有些操作无法在异步队列运行,因此必须在主线程(每个应用都有一个)上运行。UI绘图以及任何对NSNotificationCenter的调用必须在主线程长进行。在另一个队列中访问主线程并运行代码的示例如下:
dispatch_sync(dispatch_get_main_queue(), ^{ [self dismissLoginWindow]; });
注意,dispatch_suspend (以及dispatch_resume)在主线程上不起作用。
小结
目前我们已经介绍了GCD可以做到的一些基础,在本文中介绍的应该可以让你起步并轻松处理多线程。
更多信息,可以参阅Apple的Grand Central Dispatch Technology Brief 链接.
祝编码快乐!
Ricky.
以上
分享到:
相关推荐
在iOS开发中,Grand Central Dispatch(GCD)是Apple推出的一种多核处理器并行运算技术,用于优化应用程序的性能。GCD是基于C语言的,但可以无缝集成到Objective-C和Swift中。这个名为"IOS GCD-Program-master"的...
Objective-C 最初由 Brad Cox 和 Tom Love 在1980年代早期设计,后来由苹果公司采用并推广,成为 macOS 和 iOS 操作系统的主要开发语言之一。 Objective-C 的主要特点包括: 1. **面向对象**:Objective-C 支持...
在iOS开发中,Grand Central Dispatch (GCD) 是一个强大的多线程管理工具,它提供了一种高效的方式来调度和管理并发任务。其中,`dispatch_semaphore`(信号量)是GCD的一个重要特性,用于控制对共享资源的访问,...
全称:Grand Central Dispatch(GCD) 定义:GCD是苹果公司开发的一套多线程编程的API,用于简化多线程编程的复杂性。 功能:GCD提供了一个易于使用的、基于任务的并发模型,可以将任务提交给系统,系统会自动管理...
内容概要:本文详细介绍了苹果提供的 Grand Central Dispatch(简称 GCD)这一多线程编程框架的基本概念、核心技术与应用场景。文中具体探讨了其核心组件:任务、队列以及这两种元素相互协作的工作原理,即任务的...
在iOS和macOS开发中,Grand Central Dispatch(GCD)是一种强大的多线程技术,用于管理应用程序的并发性。GCD是Apple的C语言库,它抽象了底层的线程和处理器细节,使得开发者可以更方便地利用多核处理器的优势。本...
GCD(Grand Central Dispatch),是一套低层API,提供了一种新的方法来进行并发程序编写。它允许程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行。GCD比之NSOperationQueue更底层更高效,...
在iOS开发中,Grand Central Dispatch (GCD) 是一种强大的多线程管理工具,它能够帮助开发者高效地处理并发任务。本篇文章主要讨论了如何深入理解GCD中的dispatch_group、dispatch_barrier以及基于线程安全的多读单...
GCD(Grand Central Dispatch)是Apple在OS X和iOS系统中引入的一种多线程处理技术,旨在简化并发编程,提高应用程序的性能和响应速度。GCD利用了操作系统底层的调度机制,允许开发者以一种声明式的方式处理并发任务...
在IT行业中,多线程是程序设计中的一个重要概念,特别是在iOS和macOS开发中,Grand Central Dispatch(GCD)提供了一种高效、简洁的方式来管理并发和多线程。GCD是Apple开发的一种并行编程技术,它充分利用了多核...
标题中的“gcdTest下载图片 dispatch_async”涉及到两个主要的iOS编程概念:GCD(Grand Central Dispatch)和异步图像下载。GCD是苹果为多核处理器优化并发编程提供的一种技术,而dispatch_async函数是GCD中用于在...
GCD,全称为Grand Central Dispatch,是Apple在Mac OS X 10.6 Snow Leopard以及后续版本中引入的一种多核并行处理技术。它是Cocoa框架的一部分,为开发者提供了高效利用多核处理器的能力,简化了并发编程。在iOS和...
iOS GCD(Grand Central Dispatch)是Apple在2010年引入的一种多线程解决方案,它为开发者提供了一种高效、简洁的方式来管理并发任务。GCD是基于Cocoa框架的,适用于iOS和Mac OS X平台。本文将深入探讨GCD的基本概念...
在iOS开发中,Grand Central Dispatch (GCD) 是一种强大的多线程管理工具,由Apple引入,用于简化并发编程。GCD timer是基于GCD的一种计时器实现,相较于NSTimer,它提供了一种更高效、更易于管理的计时器解决方案。...
在iOS开发中,GCD(Grand Central Dispatch)是苹果提供的一种多线程解决方案,它能够帮助开发者有效地管理和调度并发任务,提高程序的执行效率。这个名为"ios-dispatch的简单demo.zip"的压缩包文件包含了关于GCD中...
- iOS中的多线程主要通过`GCD (Grand Central Dispatch)`、`NSOperation`和`NSThread`来实现。本示例可能使用了`GCD`,因为它是最高效且易于使用的并发工具。 - `GCD`允许开发者在后台线程执行耗时任务,如下载,...
GCD(Grand Central Dispatch)是苹果推出的一种强大的多线程解决方案,它为开发者提供了简单而高效的方式来管理并发任务。本文将深入探讨GCD中的异步任务、线程锁以及如何在iOS中实现它们。 首先,我们要理解什么...
GCD(Grand Central Dispatch)是苹果公司推出的多核并行运算解决方案,自动利用更多的CPU内核,自动管理线程的生命周期,程序员只需要告诉GCD想要执行什么任务,不需要编写任何线程管理代码。 二、GCD的特点 1. ...
在iOS开发中,Grand Central Dispatch(GCD)是苹果公司提供的多线程解决方案,它极大地简化了并发编程。GCD是基于C语言的API,但同时也很好地与Objective-C和Swift兼容。这篇博客文章《ios gcd》可能深入探讨了如何...
3. **GCD(Grand Central Dispatch)**:用于异步处理任务,如网络请求以获取商品详情,防止阻塞主线程。 4. **KVO(Key-Value Observing)**:监控对象属性变化,当商品数量更改时自动更新显示。 5. **动画效果**:...