我正在为网络创建一个类,说NetworkManager是一个单例。我希望此类处理网络请求。

我有两个NSOperationQueues,一个用于并行请求,其中未设置numberofConcurrent Operations。对于顺序队列,请将setMaxConcurrentOperationCount设置为1。我认为,第二个NSOperation请求将在第一个请求执行结束后执行。它仅运行处理网络请求的第一个NSOperation。如果我必须顺序处理请求,该怎么办。下面是示例代码:

NSOperation *networkOperation = [[NetworkOperation alloc]initWithRequest:request networkRequest:networkRequest];
    if(!sequentialQueue){
        sequentialQueue = [[NSOperationQueue alloc]init];

        [sequentialQueue setMaxConcurrentOperationCount:1];
    }

    [sequentialQueue addOperation:networkOperation];


请帮忙。

最佳答案

您可以继承NSOperationQueue的子类,并像这样覆盖- addOperation:方法。

- (void)addOperation:(NSOperation *)operation {

    // check whether the queue has at least one operation, you can also check for nil
    if ([[self operations] count] > 0) [operation addDependency:[self.operations lastObject]];

    [super addOperation:operation];
}

07-27 14:03