70 NSOperation基本使用
2015-08-28 11:07
429 查看
1>NSoperation: NSOperation是个抽象类,并不具备封装操作的能力,必须使用它的子类 使用NSOperation子类的方式有3种 NSInvocationOperation NSBlockOperation 自定义子类继承NSOperation,实现内部相应的方法 2>NSInvocationOperation: 创建NSInvocationOperation对象 - (id)initWithTarget:(id)target selector:(SEL)sel object:(id)arg; 调用start方法开始执行操作 - (void)start; 一旦执行操作,就会调用target的sel方法 注意 默认情况下,调用了start方法后并不会开一条新线程去执行操作,而是在当前线程同步执行操作 只有将NSOperation放到一个NSOperationQueue中,才会异步执行操作 3>NSBlockOperation 创建NSBlockOperation对象 + (id)blockOperationWithBlock:(void (^)(void))block; 通过addExecutionBlock:方法添加更多的操作 - (void)addExecutionBlock:(void (^)(void))block; - (void)start;// 注意:只要NSBlockOperation封装的操作数 > 1,就会异步执行操作 4>NSOperationQueue: NSOperationQueue的作用 NSOperation可以调用start方法来执行任务,但默认是同步执行的 如果将NSOperation添加到NSOperationQueue(操作队列)中,系统会自动异步执行NSOperation中的操作 添加操作到NSOperationQueue中 - (void)addOperation:(NSOperation *)op; - (void)addOperationWithBlock:(void (^)(void))block;
NSOperation常用设置: 1>最大并发数: 什么是并发数 同时执行的任务数 比如,同时开3个线程执行3个任务,并发数就是3 最大并发数的相关方法 - (NSInteger)maxConcurrentOperationCount; - (void)setMaxConcurrentOperationCount:(NSInteger)cnt; 2>取消队列的所有操作: - (void)cancelAllOperations; 提示:也可以调用NSOperation的- (void)cancel方法取消单个操作 暂停和恢复队列 - (void)setSuspended:(BOOL)b; // YES代表暂停队列,NO代表恢复队列 - (BOOL)isSuspended; 3>操作优先级: 设置NSOperation在queue中的优先级,可以改变操作的执行优先级 - (NSOperationQueuePriority)queuePriority; - (void)setQueuePriority:(NSOperationQueuePriority)p; 优先级的取值 NSOperationQueuePriorityVeryLow = -8L, NSOperationQueuePriorityLow = -4L, NSOperationQueuePriorityNormal = 0, NSOperationQueuePriorityHigh = 4, NSOperationQueuePriorityVeryHigh = 8 4>操作依赖: NSOperation之间可以设置依赖来保证执行顺序 比如一定要让操作A执行完后,才能执行操作B,可以这么写 [operationB addDependency:operationA]; // 操作B依赖于操作A 可以在不同queue的NSOperation之间创建依赖关系
相关文章推荐
- 总结下常用的linux命令
- 我的openwrt学习笔记(二十五):MTK7688 elian一键配置时间测量
- centos中修改fd限制
- centos 6.5 lnmp环境部署一些二次修改事项
- DNS从服务器迁移(基于windows为主,linux为从实现同步)
- jenkins中配置powershell生成svn日志(word)
- CentOS7 下 Java_Tomcat安装
- Linux源代码分析工具链
- 使用Samba实现Linux与Windows文件共享实践
- 教你学会Linux/Unix下的vi文本编辑器
- CentOS7架设并配置openssh服务器
- CentOS7给普通用户执行root相关权限
- CentOS7 LVM添加硬盘及扩容
- CentOS7 安装98五笔输入法
- Linux下查看内存使用情况方法总结
- Linux 下编译、安装、配置 QT
- 在CentOS7 下安装 ffmpeg,mplayer,swftools
- linux硬盘扩容
- [工作需求]linux常用命令以及vim常用命令
- 【linux】crontab的定时任务示例