多并发条件依赖执行 (仅供自己参考)
发布时间:2020-12-13 22:36:52 所属栏目:百科 来源:网络整理
导读:+ (void)searchMutableRequest:(NSArray *)urlArray Page:(int)page FMSSigItem:(FMSSigItem *)item CallBack:(FMSearchCallback)callback{ if (urlArray.count 0) { __block NSInteger requestCount = 0; __block NSMutableArray *mutableResult = [NSMutab
+ (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]; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |