NSOperation及子类、NSOperationQueue属性及方法
2017-04-03 14:35
465 查看
#define NSOperationQualityOfService NSQualityOfService #define NSOperationQualityOfServiceUserInteractive NSQualityOfServiceUserInteractive #define NSOperationQualityOfServiceUserInitiated NSQualityOfServiceUserInitiated #define NSOperationQualityOfServiceUtility NSQualityOfServiceUtility #define NSOperationQualityOfServiceBackground NSQualityOfServiceBackground ***NSOperation操作的属性及方法-NS_CLASS_AVAILABLE(10_5, 2_0)*** @interface NSOperation : NSObject - (void)start;//开始执行操作 - (void)main;//实现要执行的操作,自定义NSOperation时,要被重写 @property (readonly, getter=isCancelled) BOOL cancelled;//是否取消该操作 - (void)cancel;//取消操作 @property (readonly, getter=isExecuting) BOOL executing;//是否正在执行 @property (readonly, getter=isFinished) BOOL finished;//是否执行完毕 @property (readonly, getter=isConcurrent) BOOL concurrent; // To be deprecated; use and override 'asynchronous' below//是否是并行执行的 @property (readonly, getter=isAsynchronous) BOOL asynchronous NS_AVAILABLE(10_8, 7_0); @property (readonly, getter=isReady) BOOL ready;//是否就绪 - (void)addDependency:(NSOperation *)op;//添加依赖 - (void)removeDependency:(NSOperation *)op;//移除依赖 @property (readonly, copy) NSArray<NSOperation *> *dependencies;//查看所有依赖 typedef NS_ENUM(NSInteger, NSOperationQueuePriority) { NSOperationQueuePriorityVeryLow = -8L, NSOperationQueuePriorityLow = -4L, NSOperationQueuePriorityNormal = 0, NSOperationQueuePriorityHigh = 4, NSOperationQueuePriorityVeryHigh = 8 };//NSOperationQueue的优先级 @property NSOperationQueuePriority queuePriority;//获取队列的优先级 @property (nullable, copy) void (^completionBlock)(void) NS_AVAILABLE(10_6, 4_0); - (void)waitUntilFinished//来阻塞当前线程直到这个 operation 执行完成 @property double threadPriority NS_DEPRECATED(10_6, 10_10, 4_0, 8_0); @property NSQualityOfService qualityOfService NS_AVAILABLE(10_10, 8_0); @property (nullable, copy) NSString *name NS_AVAILABLE(10_10, 8_0); ***NSBlockOperation的相关属性及方法---NS_CLASS_AVAILABLE(10_6, 4_0)*** @interface NSBlockOperation : NSOperation //使用blockOperationWithBlock:初始化 + (instancetype)blockOperationWithBlock:(void (^)(void))block; //使用addExcutionBlock追加操作块 (void)addExecutionBlock:(void (^)(void))block; //查看NSBlockOperation上的操作块 @property (readonly, copy) NSArray<void (^)(void)> *executionBlocks; ***NSInvocationOperation-NS_CLASS_AVAILABLE(10_5, 2_0)NS_SWIFT_UNAVAILABLE*** @interface NSInvocationOperation : NSOperation //初始化 - (nullable instancetype)initWithTarget:(id)target selector:(SEL)sel object:(nullable id)arg; - (instancetype)initWithInvocation:(NSInvocation *)inv NS_DESIGNATED_INITIALIZER; @property (readonly, retain) NSInvocation *invocation; //可以获取invokOperation的selector的结果 @property (nullable, readonly, retain) id result; static const NSInteger NSOperationQueueDefaultMaxConcurrentOperationCount = -1; ***NSOperationQueue -NS_CLASS_AVAILABLE(10_5, 2_0)*** @interface NSOperationQueue : NSObject //添加操作 - (void)addOperation:(NSOperation *)op; - (void)addOperations:(NSArray<NSOperation *> *)ops waitUntilFinished:(BOOL)wait NS_AVAILABLE(10_6, 4_0); - (void)addOperationWithBlock:(void (^)(void))block NS_AVAILABLE(10_6, 4_0); //查看OperationQueue上的操作数以及所有操作 @property (readonly, copy) NSArray<__kindof NSOperation *> *operations; @property (readonly) NSUInteger operationCount NS_AVAILABLE(10_6, 4_0); @property NSInteger maxConcurrentOperationCount;//设置队列上的最大并发数 @property (getter=isSuspended) BOOL suspended;//是否挂起该队列 @property (nullable, copy) NSString *name NS_AVAILABLE(10_6, 4_0);//队列的名字 @property NSQualityOfService qualityOfService NS_AVAILABLE(10_10, 8_0); @property (nullable, assign /* actually retain */) dispatch_queue_t underlyingQueue - (void)cancelAllOperations;//取消所有的操作 - (void)waitUntilAllOperationsAreFinished;//等待 operation queue 中的所有 operation 执行完成 @property (class, readonly, strong, nullable) NSOperationQueue *currentQueue @property (class, readonly, strong) NSOperationQueue *mainQueue NS_AVAILABLE(10_6, 4_0); //注意:再追加操作块时必须在巧用start前,即[blOp start];否则报错blocks cannot be added after the operation has started executing or finished'
相关文章推荐
- NSOperationQueue和NSOperation的使用方法
- (转)NSOperationQueue和NSOperation的使用方法
- 线程操作 NSOperation以及他的子类与 NSOperationQueue的搭配使用
- NSOperationQueue和NSOperation的使用方法
- NSOperationQueue和NSOperation的使用方法
- NSOperationQueue和NSOperation的使用方法
- NSOperationQueue和NSOperation的使用方法
- NSOperationQueue和NSOperation的使用方法
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- 使用NSOperation和NSOperationQueue启动多线程
- [iOS]NSOperationQueue、NSOperation、NSInvocationOperation相关
- 多线程下NSOperation、NSBlockOperation、NSInvocationOperation、NSOperationQueue的小结
- 多线程(NSOperation和NSOperationQueue)
- 使用NSOperation以及NSOperationQueue
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- 多线程的使用(2) - NSOperation和NSOperationQueue
- iOS多线程编程之NSOperation和NSOperationQueue的使用
- NSOperation和NSOperationQueue的理解和学习
- GCD和NSOperationQueue添加依赖的方法