nsoperation 串行网络请求模型

1,简介demon地址

只有两个类,

HTTPSessionOperation,用于处理网络请求逻辑,

SerialOperationQueue,NSOperation请求队列,串行的

其继承关系如下

nsoperation 串行网络请求模型_第1张图片


2,使用方法

SerialOperationQueue *queue _queue = [SerialOperationQueue createQueueWithName:@"aaaaaa"];

[_queue addOperation:self.operation1];//SerialOperationQueue 添加的operation 是串行执行的

[_queue addOperation:self.operation2];

- (NSOperation*)operation2

{

    NSString *url2 = @"http://mobile.weather.com.cn/data/sk/101010100.html?_=1381891661455";

    HTTPSessionOperation *operation2 = [HTTPSessionOperation new];

    [operation2 addExecutionGetRequestWithManager:_manager URLString:url2 parameters:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nonnull responseObject) {

        NSLog(@"operation2 success 1");

    } failure:nil];

    return operation2;

}

- (NSOperation*)operation1

{

...

}


3,类实现思路

* SerialOperationQueue

(1)维护一个全局 NSMapTable 弱引用类型的map,构造方法创建一个实例时添加到该map中,get方法将通过key找到对应的实例。

(2)复写父类的setMaxConcurrentOperationCount,并设置为1,保证这是一个串行队列。

(3)其它功能参照其父类NSOperationQueue

* HTTPSessionOperation

(1)构建一个 requestArray 成员变量数组,每通过接口addExecutionRequest时,将对应的请求task添加到该数组中,

(2)每个task请求完成时,在block回调中,通过数组获取到下一个task继续执行。所有add多个task时,也是串行执行的。

(3)其它功能参照其父类NSOperation


4,demon地址demon地址:https://github.com/godLoveY/SerialOperation

你可能感兴趣的:(nsoperation 串行网络请求模型)