2014-03-24 2 views
2

난 당신이 내가 요청의 큐를 가지고 관리자를 사용하여 볼 수 있듯이 40 JSON제한 시간은

NSMutableArray *mutableOperations = [NSMutableArray array]; 
    for (NSDictionary *dict in general_URL) { 

     NSURL *url = [dict objectForKey:@"url"]; 
     NSString *key = [dict objectForKey:@"key"]; 

     NSURLRequest *request = [NSURLRequest requestWithURL:url]; 

     AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request]; 
     operation.responseSerializer = [AFHTTPResponseSerializer serializer]; 
     [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) { 

      [self.all_data setObject:[self parseJSONfile:responseObject] forKey:key]; 

     } failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
      NSLog(@"Error: %@", error); 
     }]; 

     [mutableOperations addObject:operation]; 
    } 

    NSArray *operations = [AFURLConnectionOperation batchOfRequestOperations:mutableOperations progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) { 
     NSLog(@"progress:%f", (float)numberOfFinishedOperations/totalNumberOfOperations); 
    } completionBlock:^(NSArray *operations) { 

     NSLog (@"all done"); 

    }]; 
    [manager.operationQueue addOperations:operations waitUntilFinished:NO]; 

을 다운로드하려면이 코드를 요청합니다. 문제는 갑자기 -1001 코드로 타임 아웃 상태가되는 것입니다. 이것은 EDGE 모드에서만 발생하며 wifi 및 3g에서는 발생하지 않습니다.

무엇이 문제입니까?

+0

연결 속도가 너무 느리고 서버에서 시간 초과 오류가 발생합니다. – Tander

답변

2

동시 작업이 때문에 아이폰 OS 제한 동시 네트워크 연결이 허용 얼마나 많은 사실으로 인한 시간 제한을 완화하려고 얼마나 많은 제어 할 작업 큐의 maxConcurrentOperationCount을 지정하는 경우 :

manager.operationQueue.maxConcurrentOperationCount = 4; 
[manager.operationQueue addOperations:operations waitUntilFinished:NO]; 

이 작업이 없으면 40 개의 작업을 제출할 때 모두 한 번에 4 또는 5 개만 실행할 수 있지만 NSURLConnection 개체를 시작하려고 할 수 있습니다. 연결이 느릴 경우 후자의 요청 중 일부가 시간 초과 될 수 있습니다.

maxConcurrentOperationCount을 지정하면 이전 연결이 완료 될 때까지 후자 연결을 시작하지 않습니다. 동시 요청의 성능 이점은 여전히 ​​누릴 수 있지만, iOS가 시행하는 동시 NSURLConnection 요청의 제한으로 인해 시간 초과 요청이 많지는 않습니다.

+1

예 !!!!!!!!!!!! – CrazyDev

관련 문제