为什么NSURLSession导致我的控制器被保留?

时间:2016-07-30 07:49:56

标签: ios objective-c

如果我使用的是weakSelf,我不确定为什么我的NSURLSession会保留控制器。我知道块仍然会被执行,但是当我在委托方法中设置断点(即didReceiveData)时,即使控制器已被解除,我也看到self不是nil。

会感激任何想法。

谢谢!

请参阅下面的代码段

__weak typeof(self) weakSelf = self;

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

    NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration];
    NSURLSession *session = [NSURLSession sessionWithConfiguration:configuration
                                                 delegate:weakSelf
                                            delegateQueue: nil];

    NSURLSessionDataTask *task = [session dataTaskWithRequest:request];
    [task resume];

    [weakSelf.imagesAndTasks setObject:image forKey:task];

});

0 个答案:

没有答案