我有一個用於下載數據的NSObject類'DataDownload_A'。裏面我使用NSURLSession和NSURLSessionTask。現在的問題是,當我將這個對象設置爲零時,dealloc不會被調用。這裏是DataDownload_A的片段代碼:如果調用NSURLSessionTask resume,則不調用對象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];
如果我評論的最後兩行 'self.task = [self.session dataTaskWithRequest:theRequest];'和'[self.task resume];',dealloc將被調用。因此,我認爲在使用它們時一定會有一些問題。我試圖調用'[self.task cancel]','self.task = nil','[self.session invalidateAndCancel];'和'[self.session resetWithCompletionHandler:nil];'在我將對象設置爲零之前。但沒有幫助。
因此,有誰知道我犯了什麼錯誤?將不勝感激,讓我知道。先謝謝你。
嗯,我刪除了我的答案,但你的[任務取消]和任務=零,應調用dealloc,但似乎你可能有其他的東西保持強烈的引用你的「DataDownload_A」,你應該發佈你的「DataDownload_A」調用者的代碼。 – 2017-02-13 03:27:13
謝謝。潛行。我會嘗試。 –