데이터를 다운로드하기위한 NSObject 클래스 'DataDownload_A'가 있습니다. 내부 NSURLSession 및 NSURLSessionTask를 사용합니다. 이제 문제는이 객체를 nil로 설정하면 dealloc이 호출되지 않는다는 것입니다.NSURLSessionTask 이력서가 호출되면 Object dealloc이 호출되지 않습니다.
NSString *urlString = [self URL];
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *theRequest = [NSURLRequest requestWithURL:url
cachePolicy:NSURLRequestUseProtocolCachePolicy
timeoutInterval:60.0];
NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
self.session = [NSURLSession sessionWithConfiguration:configuration
delegate:self
delegateQueue:nil];
self.receivedData = [NSMutableData data];
self.task = [self.session dataTaskWithRequest:theRequest];
[self.task resume];
그리고 마지막 두 라인 주석 경우 : 여기 DataDownload_A 세그먼트 코드는 'self.task = self.session의 dataTaskWithRequest을 : theRequest];' 및 '[self.task resume];', dealloc이 호출됩니다. 그러므로 나는 그것을 사용할 때 몇 가지 문제가 있다고 가정한다. 나는 '[self.task cancel]', 'self.task = nil', '[self.session invalidateAndCancel];'을 호출하려고했습니다. 및 '[self.session resetWithCompletionHandler : nil];' 내 객체를 nil로 설정하기 전에. 그러나 도움이되지 않았다.
아무도 내가 만든 실수를 알고 있습니까 ?? 나에게 알려 줘서 고마워. 미리 감사드립니다.
흠, 내 대답을 삭제했지만 귀하의 [task cancel] 및 task = nil이 dealloc을 호출해야하지만, 귀하의 "DataDownload_A"에 대한 강력한 참조를 유지하고있는 것으로 보입니다. "DataDownload_A"호출자에 대한 코드를 게시해야합니다. –
감사합니다. 좀도둑. 나는 그것을 시도 할 것이다. –