ASIHttpRequest / ASINetwork队列 - 请求正在完成,但只有在maxConcurrentOperationCount>时才能正确完成。 1?

时间:2012-05-08 20:46:54

标签: objective-c asihttprequest

同一系列的请求使用NSOperationQueue无缝地运行40多个请求,但我将其更改为ASINetworkQueue,它似乎只能使用maxConcurrentOperationCount为1.如果我将其设置为任何大于此值,则4 - 5之后的请求是输入requestFinished(),但请求url和description都是null / nil奇怪。

有关如何解决这个问题的想法吗?

- (IBAction)searchStockOfCatNum: (id) sender
{
    [self setNetworkQueue:[ASINetworkQueue queue]];
    [self networkQueue].maxConcurrentOperationCount = 1;
    [[self networkQueue] setDelegate:self];
    [[self networkQueue] setDownloadProgressDelegate:progBar];
    [[self networkQueue] setRequestDidFinishSelector:@selector(requestFinished:)];
    [[self networkQueue] setRequestDidFailSelector:@selector(requestFailed:)];
    [[self networkQueue] setQueueDidFinishSelector:@selector(queueFinished:)];

    for (int i = 0; i < self.ids.count; i++)
    {
      currStoreID = [self.ids objectAtIndex: i];
      NSString *urlReqStr = <URL Removed>
      NSURL *url = [NSURL URLWithString:urlReqStr];
      request = [ASIHTTPRequest requestWithURL:url];
      request.tag = i;
      [[self networkQueue] addOperation:request];
    }

    [[self networkQueue] go];
}

- (void)requestFinished:(ASIHTTPRequest *)request
{   
    NSURL *respUrl = [request url];
    NSString *respURLStr = respUrl.description;
    NSArray *pairs = [respURLStr componentsSeparatedByString:@"&"];
    NSMutableDictionary * kvPairs = [NSMutableDictionary dictionary];

    for (NSString * pair in pairs)
    {
        NSArray * bits = [pair componentsSeparatedByString:@"="];
        NSString * key = [[bits objectAtIndex:0] stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
        NSString * value = [[bits objectAtIndex:1] stringByReplacingPercentEscapesUsingEncoding:NSASCIIStringEncoding];
        [kvPairs setObject:value forKey:key];
    }

    NSString *qtyInStore = [kvPairs objectForKey:@"availableQuantityInStore"];    
    NSLog(@"Request finished. Store %i Has %@ In Stock", request.tag, qtyInStore);
}

0 个答案:

没有答案