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、有沙盒缓存
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、有沙盒缓存
相关文章推荐
- ios多线程开发——nsoperation详解
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程的初步研究(六)-- NSOperation
- 【OC】IOS多线程之NSoperation和GCD的比较
- IOS_1,ios多线程使用:NSThread和NSOperation异步加载图片
- iOS多线程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- IOS多线程编程之NSOperation和NSOperationQueue的使用
- IOS多线程之NSThread、NSOperation、NSInvocationOperation
- IOS 多线程 NSOperation
- IOS学习笔记50--多线程之NSOperation
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- IOS学习笔记23—多线程之NSThread、NSOperation、NSInvocationOperation
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- IOS学习笔记23—多线程之NSThread、NSOperation、NSInvocationOperation
- IOS多线程(NSOperation,NSOperationQueue)
- iOS多线程编程之NSOperation和NSOperationQueue的使用