美文网首页
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-循环引用

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

  • iOS-防止循环引用

    //防止循环引用 __weak typeof(self) weakSelf = self; Objective C...

  • iOS-Block 中 为何使用 weakSelf 和 stro

    目录 本篇幅代码会有些多,需要读者耐心看完。 一 block 循环引用讲解 详细请移步至 iOS-底层原理(11)...

  • iOS-解决Block循环引用

    block的循环引用问题(self ->block ->self) 定义一个block 1)__block 2)_...

  • 4-8 循环引用

    3种循环引用 自循环引用 相互循环引用 多循环引用 Block的循环引用 NSTimer 的循环引用 破除循环引用...

  • iOS-利用Xcode检测循环引用

    首先在我们的程序中添加一段循环引用代码 选择Product->Profileimage 选择Leaks,点击Cho...

  • 循环引用的相关问题

    1、循环引用的种类(1)自循环引用(2)相互循环引用(3)多循环引用 如何破除循环引用?(1)避免产生循环引用(2...

  • iOS 内存管理面试题(循环引用)

    循环引用 循环引用的实质:多个对象相互之间有强引用,不能释放让系统回收。 如何解决循环引用? 1、避免产生循环引用...

  • 内存管理-循环引用

    三种类型循环引用 自循环引用 相互循环引用 多循环引用 自循环引用 假如有一个对象,内部强持有它的成员变量obj,...

  • iOS 循环引用

    1. 循环应用的分类: 自循环引用; 相互循环引用; 多循环引用; 自循环引用: 一个对象中有一个成员变量A; 如...

网友评论

      本文标题:iOS-循环引用

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