iOS多线程之NSOperation

1NSOperation是对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>无沙盒缓存

1NSOperation是对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>无沙盒缓存

1NSOperation是对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、有沙盒缓存



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值