ios7, NSURLSessionUploadTask 및 NSURLSessionDownloadTask의 이상한 행동

2197 단어
오늘 디버그를 통해서 한 가지 현상을 발견했어요.
다운로드 작업을 만들 때 Block을 사용하는 방법을 사용합니다.
- (NSURLSessionDownloadTask *)downloadTaskWithRequest:(NSURLRequest *)request completionHandler:(void (^)(NSURL *location, NSURLResponse *response, NSError *error))completionHandler;

NSURLSessionDownloadDelegate의 콜백 방법은 호출되지 않습니다.
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
                              didFinishDownloadingToURL:(NSURL *)location;
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
                                           didWriteData:(int64_t)bytesWritten
                                      totalBytesWritten:(int64_t)totalBytesWritten
                              totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite;
- (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask
                                      didResumeAtOffset:(int64_t)fileOffset
                                     expectedTotalBytes:(int64_t)expectedTotalBytes;

따라서 이 몇 가지 리셋 방법이 필요하면 NSURLSessionDownloadTask를 만들 때completionHandler를 지정할 수 없습니다
더 이상한 것은 NSURLSessionUploadTask의 행동이 일치하지 않는다는 것이다. 만약에 블록이 있는 방법을 사용한다면:
- (NSURLSessionUploadTask *)uploadTaskWithRequest:(NSURLRequest *)request fromData:(NSData *)bodyData completionHandler:(void (^)(NSData *data, NSURLResponse *response, NSError *error))completionHandler;

NSURLSessionTaskDelegate의 콜백 방법은 호출될 수도 있고 그렇지 않을 수도 있습니다.
이 방법은 호출되지 않습니다.
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task
                           didCompleteWithError:(NSError *)error;

이 방법은 다음과 같이 호출됩니다.
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task
                                didSendBodyData:(int64_t)bytesSent
                                 totalBytesSent:(int64_t)totalBytesSent
                       totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend;

제가 쓰는 건지 뭐가 문제인지 모르겠어요.

좋은 웹페이지 즐겨찾기