2014-02-21 5 views
0

나는 NSURLSession와 다운로드를 개막 다음 코드를 가지고 있지만 위임 방법 중 어느 것도 호출되지 않은 :이 왜 몰라어떻게 NSURLSession이 시작되지 않습니까?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; 

    NSURLSessionDataTask *dataTask1 = [session dataTaskWithURL:[NSURL URLWithString:@"http://i.imgur.com/RARAP1J.jpg"]]; 
    NSURLSessionDataTask *dataTask2 = [session dataTaskWithURL:[NSURL URLWithString:@"http://i.imgur.com/JR9ZihS.jpg"]]; 
    NSURLSessionDataTask *dataTask3 = [session dataTaskWithURL:[NSURL URLWithString:@"http://i.imgur.com/f4w08VP.jpg"]]; 
    NSURLSessionDataTask *dataTask4 = [session dataTaskWithURL:[NSURL URLWithString:@"http://i.imgur.com/MzWvRKa.jpg"]]; 

    [dataTask1 resume]; 
    [dataTask2 resume]; 
    [dataTask3 resume]; 
    [dataTask4 resume]; 
} 

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { 
    NSLog(@"yep"); 
} 

- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error { 
    NSLog(@"YEAH"); 
} 

. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

+0

다음에 위임하십시오. –

+0

대의원을 설정하셨습니까? – footyapps27

답변

0

당신이 당신이 말하는

NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:nil]; 
+0

나는이 느낌이 직렬 대기열을 만들었습니다. 요청을 병렬로 실행할 수 있는지 확인하고 싶습니다. delegateQueue를 0으로 설정하면 –

+0

입니다. 모든 요청은 다른 스레드에서 호출됩니다. 그래서 그것은 병렬로 실행됩니다. – larva

+0

그러나 문서에서는 직렬 큐를 생성한다고 말합니다. –

0

와 세션 시도 초기화 세션에 대한 대리자를 설정하지 않은 일 내 :

[NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]] 

당신은 대리자를 지정하지 않은, 그래서 당신은 어떤 콜백을 얻을 것이다 방법 ? 당신은 할 수 없습니다. 완성 처리기를 추가 할 수 있도록 dataTaskWithURL:completionHandler:으로 전화하여 데이터 작업을 만들어야합니다.

물론 sessionWithConfiguration:delegate:delegateQueue:을 호출했다면 자신이 대리인으로 설정할 수 있기 때문에 더 좋았을 것입니다. 하지만 그 대리자 메서드는 절대 호출되지 않습니다.

관련 문제