同一系列的请求使用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);
}