#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'
NSOperation及子类、NSOperationQueue属性及方法
最新推荐文章于 2023-05-21 19:00:00 发布