+ (void)searchMutableRequest:(NSArray *)urlArray Page:(int)page FMSSigItem:(FMSSigItem *)item CallBack:(FMSearchCallback)callback{ if (urlArray.count > 0) { __block NSInteger requestCount = 0; __block NSMutableArray *mutableResult = [NSMutableArray arrayWithCapacity:urlArray.count]; for (int i = 0; i < urlArray.count; i++) { [mutableResult addobject:[NSNull null]]; } // // dispatch_group_notify(<#dispatch_group_t group#>,<#dispatch_queue_t queue#>,<#^(void)block#>) // // dispatch_group_async(<#dispatch_group_t group#>,<#^(void)block#>) /** NSOperation *end = [NSBlockOperation blockOperationWithBlock:^{ }]; NSOperation *op1 = [NSBlockOperation blockOperationWithBlock:^{ }]; NSOperation *op2 = [NSBlockOperation blockOperationWithBlock:^{ }]; [end addDependency:op1]; [end addDependency:op2]; NSArray *ar =@[end,op1,op2]; [[NSOperationQueue mainQueue] addOperations:ar waitUntilFinished:YES]; */ NSOperationQueue *myQueue = [[NSOperationQueue alloc] init]; myQueue.maxConcurrentOperationCount = urlArray.count; [urlArray enumerateObjectsUsingBlock:^(id obj,NSUInteger idx,BOOL *stop) { NSDictionary *dic = obj; Nsstring *urlStr = [dic objectForKey:@"url"]; NSURL *url = [NSURL URLWithString:urlStr]; NSMutableuRLRequest *request = [NSMutableuRLRequest requestWithURL:url]; [FetchMusicSourceAPI setSearchMutableRequest:request Dic:dic]; [NSURLConnection sendAsynchronousRequest:request queue:myQueue completionHandler:^(NSURLResponse *response,NSData *data,NSError *connectionError) { if (connectionError) { [FMSShowError showNetError:connectionError]; return ; } else{ if (data) { Nsstring *resultStr = [[Nsstring alloc] initWithData:data encoding:NSUTF8StringEncoding]; if(resultStr){ NSLog(@"=====%d",idx); [mutableResult replaceObjectAtIndex:idx withObject:resultStr]; NSLog(@"fffff"); } } } requestCount++; }]; }]; while (requestCount < urlArray.count) { [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]; } FMSSigItem *parseItem = [FMSSigItem itemWithsourceID:item.sourceID Method:item.method Params:item.params Mode:@"parse" Data:mutableResult]; [FetchMusicSourceAPI searchParseWithFMSSigItem:parseItem Page:page CallBack:callback]; } }