您的位置:首页 > 移动开发 > IOS开发

iOS多线程之NSOperation

2014-11-23 09:17 375 查看
1、NSOperation是对GCD的封装,在使用NSOperation的处理多线程的时候,程序员只需要将任务添加进队列即可,不用关心线程,更不用管线程状态。
1>常用方法
-start       
-main                      //自定义线程
-cancel
- cancelAllOperations;
-addDependency:             //添加依赖,根Linux的makefile差不多
-removeDependency:   //删除依赖
-setQueuePriority:   //设置优先级
-setSuspended:     //暂停队列调度,已经出队列正在执行的时不能终止的
-setCompletionBlock:   //设置监听操作(任务)完成
2>常用属性
maxConcurrentOperation     //最大并发数设置,但是并不是说想设置多少就是多少,只会减少开启的线程数
2、NSOperation是配合NSOperationQueue使用的
3、NSOperation实现多线程的步骤
1>创建一个NSOperation对象,封装一个任务(操作)到该变量,但是NSOperation是一个抽象类,不没有封装能力,封装使用NSOperation的子类封装
a.用NSBlockOperation封装
创建一个NSOperationBlock对象将任务实现在block中
e.g.:[NSBlockOperation blockOperationWithblock:]
i>NSBlockOperation可以添加更多的方法到NSBlockOperation对象调用addExecutionBlock:
ii>只要NSBlockOperation对象封装的任务(操作)数>1,就会异步执行操作(任务)
b.用NSInvocationOperation封装
创建一个NSVocationOperation对象并给对象绑定一个方法,该方法中就是任务实现
eg:[NSIvocationOperation alloc] initWithTarget:selector:obj:]
i>NSVocationOperation可以使用-start方法手动开启线程,而且开启的线程,会直接调用绑定的方法,当是默认是不会开启新线程执行绑定方法,而是直接在当前线程执行绑定方法
2>创建NSOperationQueue队列
[[NSOperationQueue  alloc] init]

3>添加NSOperation对象到NSOperationQueue队列当中
- addOperation:
- addBlockOperationWithBlock:
只要将任务或者操作添加进NSOperationQueue,就会立即创建异步线程去执行任务
4、自定义NSOperation
只要重写- main方法即可实现自定义

5、缓存网络图片
1>无沙盒缓存

1、NSOperation是对GCD的封装,在使用NSOperation的处理多线程的时候,程序员只需要将任务添加进队列即可,不用关心线程,更不用管线程状态。
1>常用方法
-start       
-main                      //自定义线程
-cancel
- cancelAllOperations;
-addDependency:             //添加依赖,根Linux的makefile差不多
-removeDependency:   //删除依赖
-setQueuePriority:   //设置优先级
-setSuspended:     //暂停队列调度,已经出队列正在执行的时不能终止的
-setCompletionBlock:   //设置监听操作(任务)完成
2>常用属性
maxConcurrentOperation     //最大并发数设置,但是并不是说想设置多少就是多少,只会减少开启的线程数
2、NSOperation是配合NSOperationQueue使用的
3、NSOperation实现多线程的步骤
1>创建一个NSOperation对象,封装一个任务(操作)到该变量,但是NSOperation是一个抽象类,不没有封装能力,封装使用NSOperation的子类封装
a.用NSBlockOperation封装
创建一个NSOperationBlock对象将任务实现在block中
e.g.:[NSBlockOperation blockOperationWithblock:]
i>NSBlockOperation可以添加更多的方法到NSBlockOperation对象调用addExecutionBlock:
ii>只要NSBlockOperation对象封装的任务(操作)数>1,就会异步执行操作(任务)
b.用NSInvocationOperation封装
创建一个NSVocationOperation对象并给对象绑定一个方法,该方法中就是任务实现
eg:[NSIvocationOperation alloc] initWithTarget:selector:obj:]
i>NSVocationOperation可以使用-start方法手动开启线程,而且开启的线程,会直接调用绑定的方法,当是默认是不会开启新线程执行绑定方法,而是直接在当前线程执行绑定方法
2>创建NSOperationQueue队列
[[NSOperationQueue  alloc] init]

3>添加NSOperation对象到NSOperationQueue队列当中
- addOperation:
- addBlockOperationWithBlock:
只要将任务或者操作添加进NSOperationQueue,就会立即创建异步线程去执行任务
4、自定义NSOperation
只要重写- main方法即可实现自定义

5、缓存网络图片
1>无沙盒缓存

1、NSOperation是对GCD的封装,在使用NSOperation的处理多线程的时候,程序员只需要将任务添加进队列即可,不用关心线程,更不用管线程状态。
1>常用方法
-start       
-main                      //自定义线程
-cancel
- cancelAllOperations;
-addDependency:             //添加依赖,根Linux的makefile差不多
-removeDependency:   //删除依赖
-setQueuePriority:   //设置优先级
-setSuspended:     //暂停队列调度,已经出队列正在执行的时不能终止的
-setCompletionBlock:   //设置监听操作(任务)完成
2>常用属性
maxConcurrentOperation     //最大并发数设置,但是并不是说想设置多少就是多少,只会减少开启的线程数
2、NSOperation是配合NSOperationQueue使用的
3、NSOperation实现多线程的步骤
1>创建一个NSOperation对象,封装一个任务(操作)到该变量,但是NSOperation是一个抽象类,不没有封装能力,封装使用NSOperation的子类封装
a.用NSBlockOperation封装
创建一个NSOperationBlock对象将任务实现在block中
e.g.:[NSBlockOperation blockOperationWithblock:]
i>NSBlockOperation可以添加更多的方法到NSBlockOperation对象调用addExecutionBlock:
ii>只要NSBlockOperation对象封装的任务(操作)数>1,就会异步执行操作(任务)
b.用NSInvocationOperation封装
创建一个NSVocationOperation对象并给对象绑定一个方法,该方法中就是任务实现
eg:[NSIvocationOperation alloc] initWithTarget:selector:obj:]
i>NSVocationOperation可以使用-start方法手动开启线程,而且开启的线程,会直接调用绑定的方法,当是默认是不会开启新线程执行绑定方法,而是直接在当前线程执行绑定方法
2>创建NSOperationQueue队列
[[NSOperationQueue  alloc] init]

3>添加NSOperation对象到NSOperationQueue队列当中
- addOperation:
- addBlockOperationWithBlock:
只要将任务或者操作添加进NSOperationQueue,就会立即创建异步线程去执行任务
4、自定义NSOperation
只要重写- main方法即可实现自定义

5、缓存网络图片
1>无沙盒缓存



2、有沙盒缓存

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息