在 iOS 中其实目前有 4 套多线程方案,他们分别是:PthreadsNSThreadGCDNSOperation & NSOperationQueue所以接下来,我会一一讲解这些方案的使用方法和一些案例。在将这些内容的时候,我也会顺带说一些多线程周边产品。比如: 线程同步、 延时执行、 单例模式...
分类:
移动开发 时间:
2015-08-28 12:29:32
阅读次数:
224
GCD提供了功能强大的任务和队列控制功能,相比于NSOperationQueue更加底层,因此如果不注意也会导致死锁。所谓死锁,通常指有两个线程A和B都卡住了,并等待对方完成某些操作。A不能完成是因为它在等待B完成。但B也不能完成,因为它在等待A完成。于是大家都完不成,就导致了死锁(DeadLock)。有一定GCD使用经验的新手通常认为,死锁是很高端的操作系统层面的问题,离我很远,一般不会遇上。其实...
分类:
其他好文 时间:
2015-08-28 00:52:28
阅读次数:
6031
NSOperation 是一个基类 (抽象类(比如NSObject))不能够直接使用 必须使用它的子类 它默认是在当前线程进行操作常与 NSOperationQueue(线程队列)一起使用,在与线程队列一起使用的时候会自动开辟线程进行操作,不用手动操作(*****)。 如果只是单独使用 NSOper...
分类:
编程语言 时间:
2015-08-27 21:00:57
阅读次数:
178
NSOperation
NSOperation是苹果封装的一套多线程的东西,不像GCD是纯C语言的,这个是OC的。但相比较之下GCD会更快一些,但本质上NSOPeration是多GDC的封装。
NSOperation相对于GCD:
NSOperation拥有更多的函数可用NSOperationQueue中,可以建立各个NSOperation之间的依赖关系。NSOperat...
分类:
移动开发 时间:
2015-08-25 21:53:30
阅读次数:
368
简介
通过NSOperation与NSOperationQueue的组合也能实现多线程
通常将任务封装成NSOperation对象,并将对象添加到NSOperationQueue中实现
NSOperation
NSOperation是一个抽象类,不能用来直接封装操作,通常使用它的子类来封装操作
若不将NSOperation对象添加到NSOperationQueue中,...
分类:
移动开发 时间:
2015-08-20 13:07:44
阅读次数:
123
GCD编程的核心就是dispatch队列,dispatch block的执行最终都会放进某个队列中去进行,它类似NSOperationQueue但更复杂也更强大,并且可以嵌套使用。所以说,结合block实现的GCD,把函数闭包(Closure)的特性发挥...
分类:
移动开发 时间:
2015-08-18 16:46:29
阅读次数:
145
一、简介 一个NSOperation对象可以通过调用start方法来执行任务,默认是同步执行的。也可以将NSOperation添加到一个NSOperationQueue(操作队列)中去执行,而且是异步执行的。 创建一个操作队列: [java]?view pl...
分类:
移动开发 时间:
2015-08-18 14:25:25
阅读次数:
232
NSOperation 抽象类
NSOperation 是一个”抽象类”,不能直接使用
抽象类的用处是定义子类共有的属性和方法
在苹果的头文件中,有些抽象类和子类的定义是在同一个头文件中的
子类:
NSInvocationOperation (调用)
NSBlockOperation (块)
NSOperationQueue 队列
已经学习过的抽象类
UIGestureRecognizer
CAA...
分类:
其他好文 时间:
2015-08-16 02:12:56
阅读次数:
379
使用GCD什么是GCDGrand Central Dispatch (GCD)是Apple开发的一个多核编程的解决方法。该方法在Mac OS X 10.6雪豹中首次推出,并随后被引入到了iOS4.0中。GCD是一个替代诸如NSThread, NSOperationQueue, NSInvocatio...
分类:
其他好文 时间:
2015-08-12 23:25:54
阅读次数:
197