美文网首页
IOS面试之block什么时候需要构造循环引用

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

作者: 子键_北京不眠夜 | 来源:发表于2016-12-05 22:14 被阅读30次

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

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

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

  • 事前避免,我们在会产生循环引用的地方使用weak弱引用,以避免产生循环引用
  • 事后补救,明确知道会产生循环引用,但是在合理的位置断开环中的一个引用,是的对象得逸回收。

相关文章

网友评论

      本文标题:IOS面试之block什么时候需要构造循环引用

      本文链接:https://www.haomeiwen.com/subject/ddelmttx.html