OC中多线程编程的核心就是block与gcd。这虽然是两种不同的技术,但他们是一并引入的。block是一种可在C、C++及OC代码中使用的“词法闭包”(lexical closure),它极为有用,借此机制,开发者可将代码像对象一样传递,令其在不同环境(context)下运行。在block的范围内,它可以访问到其中的全部变量。
gcd是一种与block有关的技术,它提供了对线程的抽象,而这种抽象基于“派发队列”(dispatch queue)。开发者可将block排入队列中,有gcd负责处理所有调度事宜。gcd会根据系统资源情况,适时得创建、复用、摧毁后台线程,以便处理每个队列。此外,使用GCD还可以方便的完成常见编程任务,比如编写“只执行一次的线程安全代码”(thread-safe single-code execution),或者根据可用的系统资源来并发执行多个操作。
block和gcd是当前OC的编程基石。因此必须理解其工作原理及功能
第37条:理解block这一概念
block可以实现闭包。这项语言特性是作为扩展而加入GCC编译器中的,在近期版本的Clang中都可以使用。从技术上讲,这是位于C语言层面的特性,因此只要有支持此特性的编译器以及能执行block的运行期组件,就可以在C、C++、OC,PC++代码中使用它。
block的基础知识
void (^someBlock)() = ^{
//Block implementation here
};