现代Objective - C编程中的Blocks与Grand Central Dispatch
在现代应用开发中,多线程编程是每个开发者都需要考虑的问题。即使你认为自己的应用不是多线程的,但实际上很可能是,因为系统框架常常会使用额外的线程来在UI线程之外完成工作。没有什么比因UI线程被阻塞而导致应用程序挂起更糟糕的了。在Mac OS X中,这会导致可怕的旋转沙滩球;在iOS中,如果应用阻塞时间过长,可能会被终止。
幸运的是,苹果以一种全新的方式考虑了多线程问题。现代多线程的核心特性是Blocks和Grand Central Dispatch(GCD)。虽然它们是不同且独立的技术,但它们是一起引入的。
1. Blocks和GCD简介
- Blocks :为C、C++和Objective - C提供词法闭包。它提供了一种将代码像对象一样传递的机制,可在不同的上下文中运行,并且可以使用其定义范围内的任何变量。
- GCD :基于所谓的调度队列对线程进行抽象。可以将Blocks添加到这些队列中,GCD会为你处理所有调度。它会根据系统资源,按需创建、重用和销毁后台线程来处理每个队列。此外,GCD还为常见的编程任务提供了易于使用的解决方案,例如线程安全的单代码执行和基于可用系统资源并行运行任务。
2. 理解Blocks
2.1 Block基础
Block类似于函数,但它是在另一个函数内联定义的,并共享其定义所在的作用域。表示Block的符号是插入符号(^),后面跟着包含Block实现的作用域块。例如: <
超级会员免费看
订阅专栏 解锁全文
682

被折叠的 条评论
为什么被折叠?



