2012-09-27 4 views
5

모든 요청을 취소하고 싶습니다. 모든 요청을 취소비동기 NSURLConnection 및 NSOperation - 취소

-(void)cancelAllRequests 
{ 
    NSLog(@"%@",self.queue.operations); 
    [self.queue cancelAllOperations]; 
    [self.queue waitUntilAllOperationsAreFinished]; 
} 

:

[NSURLConnection sendAsynchronousRequest:echo queue:self.queue completionHandler:^(NSURLResponse *respone, NSData *data, NSError *error){ 

내가 다음이 방법을 사용하십시오 여기에 내가 비동기 연결을 만드는거야 방법이다.

실제로 BOOL을 YES로 변경하는 것 외에는 아무 것도하지 않습니다.

그래서 어떻게 비동기 연결을 취소해야합니까?

답변

5

을 사용하여 예약 된 연결을 취소 할 수 없습니다. 참조하는 대기열은 완료 핸들러를 예약하는 데에만 사용됩니다.

NSURLConnection을 완전히 제어하려면 NSURLConnectionDelegate을 직접 구현해야합니다. 예제 구현은에서 찾을 수 있습니다 https://gist.github.com/3794804

+0

몇 분 안에이 사실을 알리겠습니다. – leo

1

당신이 할 수있는 작업 (블록을 ​​사용하여)에 동기 요청을 넣어.

NSOperationQueue maxNumberOfConcurrentOperations를 1로 설정하면 (한 번에 하나씩 실행됩니다).

그런 다음 queue에서 cancelAllOperations를 실행하면 아직 실행되지 않은 모든 작업이 중지됩니다.

관련 문제