IOS面试之block什么时候需要构造循环引用

2016-12-05  本文已影响30人  子键_北京不眠夜

在网络请求API会持有回调的block,回调的block会持有self,而self也持有网络请求API的话,我们就构造了一个循环引用。虽然我们构造出了循环引用,但是因为网络请求结束时,网络请求API会主动释放对block的持有,因为整个循环链条被解开,循环应用就被打破了,所以不会存在内存泄露问题。

- (void)clearCompletionBlock{
          //nil out to break the retain cycle
          self.successCompletionBlock = nil;
          self.failureCompletionBlock     = nil;
}

总之,解决循环引用问题主要有两个办法:

上一篇 下一篇

猜你喜欢

热点阅读