美文网首页
iOS-循环引用

iOS-循环引用

作者: Imkata | 来源:发表于2021-11-22 21:39 被阅读0次

    如果一个控制器被循环引用了,那么这个控制器pop后不会调用dealloc方法,iOS中常见的循环引用以及解决方法如下:

    1. 如果使用了代理,代理要使用weak修饰,否则会产生循环引用
    2. 如果使用到了NSTimer,可能产生循环引用,最简单的解决办法就是使用GCD定时器代替
    3. block内部使用weakSelf(也不全是,视情况而定)
    4. 如果有网络请求等等的,有可能网络请求中使用强指针保存了self,这时候如果在当前界面保存网络请求就需要用weak
    5. 如果当前VC保存了另外一个VC2,比如:当前VC保存了一个当前导航控制器push出来的VC2,因为导航控制器的栈中已经有这个VC2了,所以保存这个VC2只能使用weak,否则VC2在pop后并不会调用dealloc方法,因为VC还在强引用着它,所以必须使用weak来保存VC2

    相关文章

      网友评论

          本文标题:iOS-循环引用

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