iOS多线程之 NSOperation和NSOpreationQueue的使用
来源:互联网 发布:醉红楼聊天软件下载 编辑:程序博客网 时间:2024/05/29 06:43
NSOpreation使用方式有两种
一种是用定义好的两个类
NSInvocaionOpreation和NSBlockOpreaion
另继承NSOpreation
和java.lang.Runnable接口相似 只需继承重写NSOpreation的一个方法main 然后把NSOpreation子类对象放入NSOpreaionQueue队列中 队列就会启动并处理
NSInvocationOpration例子
.h
#import<UIKit/UIKit.h>
@interface ViewController:UIViewController
@property(weak,nonatomic)IBoutlet UIimageView * imageView;
@end
#define KURL@“”
@interface ViewController()
@end
@implementation ViewController
-(void)viewDidLoad{
[super viewDidLoad];
NSinvocationOpreation * opreation=[[NSInvocationOpration]initWithTarget:self selector:@selector(downloadImage:)object:KURL];
NSOperationQueue * queue=[[NSOperationQueue alloc]init];
[queue addOperation:operation];
}
-(void)downloadImage:(NSString*)url{
NSlog(@“url:%@“,url);
NSURL * nsUrl=[NSURL URLWithString:url];
NSData * data=[[NSData alloc]initWithContentsOfURL:Url];
UIImage * image=[[UIImage alloc]initWithData:data];
[self performSelectorOnMainThread:@selector(updateUI:) withObject:image waitUntilDone:YES];
}
-(void)updateUI:(UIImage*)imaeg{
self.imageView.image=image;
}
1viewDidLoad方法里我们用NSInvocation建立了一个后台线程 并且放到NSOpreationQueue中。后台线程执行downloadImage方法
2downloadImage方法处理下载图片的逻辑。下载完成后用performSelectorOnMainThread执行主线程的updateUI方法
3updataUI并把下载的图片显示到图片控件中
第二种方式继承NSOpreation
在.m文件中实现main方法,main方法便可要执行的代码即可
如何控制线程池中的线程数
队列里可以加入很多个NSOperation,可以把NSOperation看作一个线程池 可往线程池中添加操作(NSOpreaiton)到队列里。线程池作为消费者 从队列中取走
并执行它
[queue setMaxConcurrentOprationCount:5];
线程池中的线程数,也就是并发操作数 默认情况下是-1,-1表示没有限制,这样会同时运行队列的全部操作
- iOS多线程之 NSOperation和NSOpreationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- IOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用 .
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- android 性能测试iozone篇
- java中jni的是调用
- Git Rebase
- oracle 存储过程循环体中的return和exit区别:
- Android 百度地图API 定位 导航
- iOS多线程之 NSOperation和NSOpreationQueue的使用
- android 曲线图实例
- 嵌入式 vim全局替换命令
- Reverse Words in a String
- erlang shell初始化工作目录
- ceph存储 Ceph论文译文--Ceph:一个可扩展,高性能分布式文件系统
- 文本文件的读写
- 关于 ASP.NET 的 CompilationMode="Never" 性能问题
- 【基础常识】什么是printf和scanf