我有一个用于下载数据的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
谢谢。潜行。我会尝试。 –