我已经编写了一个示例代码来建立服务器连接。请在下面找到我编写的代码。
__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/