NSOperation自定义
来源:互联网 发布:opencv python 安装 编辑:程序博客网 时间:2024/05/17 09:13
示例代码如下:
//// MyOperation.m// Test9//// Created by lagou on 15/11/30.// Copyright © 2015年 lagou. All rights reserved.//#import "MyOperation.h"@interface MyOperation()@property (assign, nonatomic, getter = isExecuting) BOOL executing;@property (assign, nonatomic, getter = isFinished) BOOL finished;@property(nonatomic, strong) NSURLRequest *request;@property(nonatomic, strong) NSURLSession *session;@property(nonatomic, strong) NSString *threadName;@end@implementation MyOperation@synthesize executing = _executing;@synthesize finished = _finished;- (id)initWithName:(NSString *)name{ if (self = [super init]) { _threadName = name; _executing = NO; _finished = NO; } return self;}- (void)start { if (self.isCancelled) { self.finished = YES; return; } self.executing = YES;//不知道有没有必要写 //开启任务 .......
//结束任务 [self done]; return;}//执行完了一定要调用done,否则不认为执行结束了- (void)done { self.finished = YES; self.executing = NO; [self reset];}- (void)reset { }- (void)setFinished:(BOOL)finished { [self willChangeValueForKey:@"isFinished"]; _finished = finished; [self didChangeValueForKey:@"isFinished"];}- (void)setExecuting:(BOOL)executing { [self willChangeValueForKey:@"isExecuting"]; _executing = executing; [self didChangeValueForKey:@"isExecuting"];}
//这两个函数 根本就没调用到 而且写不写都是并发的 奇怪- (BOOL)isConcurrent { return YES;}//iOS8之后- (BOOL)isAsynchronous { return YES;}@end
NSOperation提供了
ready
cancelled
executing
finished
这几个状态变化,我们的开发也是必须处理自己关心的其中的状态。这些状态都是基于keypath的KVO通知决定,所以在你手动改变自己关心的状态时,请别忘了手动发送通知。这里面每个属性都是相互独立的,同时只可能有一个状态是YES。finished
这个状态在操作完成后请及时设置为YES,因为NSOperationQueue所管理的队列中,只有isFinished为YES时才将其移除队列,这点在内存管理和避免死锁很关键。 0 0
- 自定义NSOperation
- 自定义 NSOperation
- NSOperation自定义
- 自定义NSOperation
- 自定义NSOperation
- 自定义 NSOperation
- 自定义NSOperation
- 自定义NSOperation
- 71 自定义NSOperation
- 自定义NSOperation 下载图片
- 233,自定义NSOperation
- iOS开发 自定义NSOPeration
- 自定义NSOperation(二)
- iOS开发多线程-自定义NSOperation
- iOS开发之自定义NSOperation
- 继承NSOperation-自定义同步 operation
- 继承NSOperation-自定义异步 Operation
- 《多线程——自定义NSOperation》
- 第13周项目3二叉排序树
- poj_1163:The Triangle
- 【C/C++学院】0829-位容器multimapmutisetString/算法函数兰不达表达式以及类重载/GPU编程
- 关于Android service的一些基础知识集合
- 读 《周爱民--大道之简》 笔记
- NSOperation自定义
- SQL Server系列(4) -- T-SQL编程
- 第13周项目1Dijkstra算法的验证
- LintCode_第k大元素
- 基于GigE_Vision协议接收相机发送的数据包显示的图像中出现固定位置黑线的解决
- 传智播客Java学习路线图
- 时间复杂度和空间复杂度详解
- 【第13周 项目1 - Prim算法的验证】
- 第十三周项目2-Kruskal算法的验证