iOS多线程编程之NSOperation和NSOperationQueue的使用
2015-07-14 22:55
639 查看
转载地址:http://blog.csdn.net/totogo2010/article/details/8013316
使用NSOperation的方式有两种
1. 定义好两个子类,NSInvocationOperation和NSBlockOperation。
2. 继承NSOperation类
NSOperation和java.lang.Runnable接口类似。和JAVA的Runnable接口一样,是用来扩展的,需要继承NSOperation的一个方法main。相当于java中Runnable的Run方法。然后将NSOperation子类的对象放入NSOperationQueue队列中,该队列就会启动并开始处理它。
NSInvocationOperation示例:
继承NSOperation
在.m文件里实现main方法,main方法编写要执行的代码即可。
控制线程个数:
[queue setMaxConcurrentOperationCount:5];
线程池中的线程数,也就是并发操作数。默认情况下是-1,-1表示没有限制,这样会同时运行队列中的全部的操作。
使用NSOperation的方式有两种
1. 定义好两个子类,NSInvocationOperation和NSBlockOperation。
2. 继承NSOperation类
NSOperation和java.lang.Runnable接口类似。和JAVA的Runnable接口一样,是用来扩展的,需要继承NSOperation的一个方法main。相当于java中Runnable的Run方法。然后将NSOperation子类的对象放入NSOperationQueue队列中,该队列就会启动并开始处理它。
NSInvocationOperation示例:
#import "ViewController.h" #define kURL @"http://avatar.csdn.net/2/C/D/1_totogo2010.jpg" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; NSInvocationOperation *operation = [[NSInvocationOperation alloc]initWithTarget:self selector:@selector(downloadImage:) object:kURL]; NSOperationQueue *queue = [[NSOperationQueue alloc]init]; [queue addOperation:operation]; // Do any additional setup after loading the view, typically from a nib. } -(void)downloadImage:(NSString *)url{ NSLog(@"url:%@", url); NSURL *nsUrl = [NSURL URLWithString:url]; NSData *data = [[NSData alloc]initWithContentsOfURL:nsUrl]; UIImage * image = [[UIImage alloc]initWithData:data]; [self performSelectorOnMainThread:@selector(updateUI:) withObject:image waitUntilDone:YES]; } -(void)updateUI:(UIImage*) image{ self.imageView.image = image; }
继承NSOperation
在.m文件里实现main方法,main方法编写要执行的代码即可。
控制线程个数:
[queue setMaxConcurrentOperationCount:5];
线程池中的线程数,也就是并发操作数。默认情况下是-1,-1表示没有限制,这样会同时运行队列中的全部的操作。
相关文章推荐
- 欢迎使用CSDN-markdown编辑器
- UITableVIew的性能优化-重用原理
- [翻译] BAFluidView
- [Erlang_Question32]ibrowse流程及性能测试
- iOS Xcode 6报错:setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key v
- ueditor引入通用优酷视频
- Easyui Tab刷新
- UIScrollView 实现比例缩放
- UiAutomator喷射事件的源代码分析
- UIKit之浅析UIButton
- 关于继承UITableViewController若干问题
- Table的分割线偏移量设置 及其 UIEdgeInset详解
- iOS开发UI篇—UITabBarController简单介绍
- iOS --- 搜索框UISearchController的使用(iOS8.0以后替代UISearchBar + UISearchDisplayController的组合)
- NSArray, NSNumber, NSValue, NSSet, 数组排序
- UI基础(二)-图层
- IOS开发UI篇--一个侧滑菜单SlidingMenu
- UI_UItableView_AutoCell(自定义cell 高度)
- UI中一些名词的缩写
- 暑假选拔赛02 ---- Ysequence