我已经编写了一个示例代码来建立服务器连接。请在下面找到我编写的代码。

__weak typeof(self) weakSelf = self;
self.dataTask = [defaultSession dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
    weakSelf.dataTask = nil;
    NSInteger extractionResponseCode = [((NSHTTPURLResponse *)response) statusCode];
    if (!error && data.length > 0 && extractionResponseCode == 200)
    {
        [weakSelf handleResponse:data];
    }
    else
    {
        [weakSelf handleError:error];
    }
}];

得到响应后,我必须根据响应调用handleResponse:handleError:

我采取了softSelf来避免ARC中的保留周期问题。

我在这里的问题是在弱函数selfSelf变为nil的块内,因此没有调用handleResponse:handleError:方法。

您能帮助我如何解决此问题。

提前致谢。

最佳答案

答案是要获得强有力的参考。无论如何,您没有保留周期,除非self引用了完成块。无论如何,当该块返回时,强引用将被释放,如果您碰巧拥有一个,则会中断循环。

关于ios - 弱的self在块内变为零,但我想在块内使用self对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38518729/

10-11 03:30