码迷,mamicode.com
首页 > 移动开发 > 详细

iOS多线程系列(二)------NSOperation和NSOperationQueue

时间:2014-11-06 19:14:01      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:io   ar   os   使用   sp   strong   on   art   bs   

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

标签:io   ar   os   使用   sp   strong   on   art   bs   

原文地址:http://www.cnblogs.com/wyqfighting/p/4079463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!