NSOperation及子类、NSOperationQueue属性及方法

来源:互联网 发布:淘宝页头尺寸 编辑:程序博客网 时间:2024/05/14 17:36
#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'
0 0
原创粉丝点击