首页 > 代码库 > iOS多线程系列(二)------NSOperation和NSOperationQueue
iOS多线程系列(二)------NSOperation和NSOperationQueue
NSOperation 是抽象类,对它的使用可以直接使用系统提供的两个子类:NSInvocationOperation、NSBlockOperation,也可以自己写个类,继承NSOperation。
NSOperation有2种形式:并发的、非并发的
(1) 并发执行
并发执行你需要重载如下4个方法
- (void)start //执行任务主函数,线程运行的入口函数
- (BOOL)isConcurrent //是否允许并发,返回YES,允许并发,返回NO不允许。默认返回NO
- (BOOL)isExecuting
- (BOOL)isFinished //是否已经完成,这个必须要重载,不然放在放在NSOperationQueue里的NSOpertaion不能正常释放
比如TestNSOperation:NSOperaion 重载上述的4个方法, 声明一个NSOperationQueue,
NSOperationQueue *queue = [[[NSOperationQueue alloc ] init] autorelease];
[queue addOperation:testNSoperation];
一旦一个操作被加入队列,该队列就会启动并开始处理它(即调用该操作类的main方法)。一旦该操作完成队列就会释放它。 此例中, 它会自动调用TestNSOperation里的start函数。
如果需要多个NSOperation,你需要设置queue的一些属性,如果多个NSOperation之间有依赖关系,也可以设置,具体可以参考API 文档。
可以给操作队列设置最多同事运行的操作数: [queue setMaxConcurrentOperationCount:2];
iOS多线程系列(二)------NSOperation和NSOperationQueue