2014-07-17 2 views
4

사용자가보기를 떠날 때 또는 새로운 요청을 시작할 때 모든 현재의 비동기 요청을 취소 할 수있는 기능을 추가하려고합니다. 코드를 어디에 넣을 지 알고 있지만 실제로 요청을 취소하는 방법을 잘 모르겠습니다. 내 연구에서 NSURLConnection에는 cancel 메서드가 있지만 그 요청은 비동기 블록을 사용하여 호출한다는 것을 알고 있습니다. 아래는 제 코드입니다 - 어떤 도움을 주시면 감사하겠습니다! 편리한 방법 +sendAsynchronousRequest:queue:completionHandler 또는 +sendSynchronousRequest:returningResponse:error:를 사용하는 경우Objective-C에서 비동기 HTTP 요청을 취소하는 방법은 무엇입니까?

NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; 
[request setHTTPMethod:@"GET"]; 
[request setURL:[NSURL URLWithString:[kEndpointEvents stringByAppendingString:arguments]]]; 

//Send an asynchronous request so it doesn't pause the main thread 
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue currentQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) { 

    NSHTTPURLResponse *responseCode = (NSHTTPURLResponse *)response; 

    //Do stuff 

}]; 

답변

1

이 진행중인 요청을 취소 할 수 없습니다.

취소를 원하면 NSURLConnectionDataDelegate 대리자의 메서드를 구현하고 콜백에서 직접 데이터를 빌드하십시오. 그렇게하면 연결 개체를 제어 할 수 있으며 언제든지 -cancel을 호출 할 수 있습니다.

+0

라이브러리, 튜토리얼 또는 권장 사례가 있습니까? – rebello95

+1

Checkout https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/URLLoadingSystem/Tasks/UsingNSURLConnection.html, http://stackoverflow.com/questions/9577317/nsurlconnection-delegate-method, http : //codewithchris.com/tutorial-how-to-use-ios-nsurlconnection-by-example/ – Anurag

+1

궁금한 다른 사람에게 참고하십시오 : AFNetworking 라이브러리를 사용하여 연구를 마친 후에야 궁금해졌습니다. 그것은 연결 취소 등을 허용하는 매우 잘 설계되고 최신 라이브러리입니다. – rebello95

관련 문제