异步技术有两个:
Grand Central Dispatch(GCD):系统管理线程,你不需要编写线 程代码。只需定义想要执行的任务,然后添加到适当的 dispatch queue。GCD 会负责创建线程和调度你的任务。系统直接提供线 程管理,比应用实现更加高效。
Operation Queue:Objective-C 对象,类似于 dispatch queue。你 定义想要执行的任务,并添加任务到 operation queue,后者负责 调度和执行这些任务。和 GCD 一样,Operation Queue 也管理了 线程,更加高效。
Dispatch Queue 是基于 C 的执行自定义任务机制。
dispatch queue 总是按先进先出的顺序执 行任务 ,operation queues 执行任务时还要根据依赖度等因素来决定执行的顺序。
operations先满足依赖关系,然后再根据优先级从所有 准备好的操作中选择优先级最高的那个执行。
串行化的 operation queue 并不等同于 GCD 中的串行 dispatch queue。
从技术角度来看,并发是程序的属性,而并行运作是机器的属性。并行和并发是两种分开的概念。作为程序员,你不能保证你的代码会在能并行执行你的代码的机器上运行。然而,你可以设计你的代码,让它使用并发操作。
NSOperation 类有一个相当简短的声明。要定制一个操作,可以遵循以下步骤:
1.继承NSOperation类
2.重写“main”方法
3.在“main”方法中创建一个“autoreleasepool”
4.将你的代码放在“autoreleasepool”中
创建你自己的自动释放池的原因是,你不能访问主线程的自动释放池,所以你应该自己创建一个。
原文:http://www.cnblogs.com/yanggongfu/p/3821181.html