美文网首页
iOS 常见的三种循环引用

iOS 常见的三种循环引用

作者: 末上 | 来源:发表于2018-06-21 14:30 被阅读20次

1. delegate

delegate 是iOS中开发中最常遇到的循环引用,一般在声明delegate的时候都要使用弱引用weak或者assign当然怎么选择使用assign还是weak,MRC的话只能用assign,在ARC的情况下最好使用weak,因为weak修饰的变量在释放后自动指向nil,防止野指针存在

2.block

当某个类将block作为自己的属性变量,然后该类在block的方法体里面又使用了该类本身就产生了循环引用问题解决办法: 通过 __weak__block 去声明一个弱引self

_weak typeof(self) weakSelf =self;

self.blkA = ^{

//加一下强引用,避免weakSelf被释放掉

__strong typeof(weakSelf) strongSelf = weakSelf;//不会导致循环引用.

NSLog(@"%@", strongSelf->_xxView); 

};

3.NSTimer

当你创建使用NSTimer的时候,NSTimer会默认对当前self有个强引用,所以在self使用完成打算释放的时候,一定要先使用NSTimer的invalidate来停止,释放时间控制对self的引用[_timer invalidate];

相关文章

  • iOS 常见的三种循环引用

    1.delegate delegate 是iOS中开发中最常遇到的循环引用,一般在声明delegate的时候都要使...

  • 一个奇怪且无聊的检测Block的想法

    在大多数iOS应用开发过程中, 循环引用一直都是最常见的iOS开发问题之一。通常情况下, 最常见的循环引用问题就是...

  • iOS开发中的循环引用

    循环引用的实质是,多个对象之间相互强引用,导致不能释放,让系统回收。iOS开发中常见的循环引用主要是由Delega...

  • 循环引用的场景 & 处理

    参考文档 【原】iOS容易造成循环引用的三种场景,就在你我身边! 谈谈OC中的循环引用 关于Block内部要不要使...

  • weak-strong dance探究

    循环引用 循环引用是iOS开发常见的问题,虽然现在普遍是ARC工程,但是这个问题仍然无可避免。一般都是两个强引用对...

  • Block循环引用的四种解决方案

    Block常见的循环引用模型 以下是常见的Block循环引用模型,self引用block,block引用self,...

  • iOS循环引用梳理

    总结梳理一下循环引用相关的知识点。 循环引用分三种:1.自循环引用,2.相互循环引用,3.多循环引用,这三种就不多...

  • IOS 常见循环引用问题

    问题出现描述当多个对象相互持有形成一个封闭的环时,循环引用问题随之出现,导致内存泄漏。 常见几种循环引用总结1、代...

  • iOS之常见循环引用

    循环引用:(大家都知道我们OC内存管理采用引用计数机制,可自行了解)A->B , B->A ,导致无法释放就造成了...

  • iOS闭包循环引用精讲

    iOS闭包循环引用精讲 iOS闭包循环引用精讲

网友评论

      本文标题:iOS 常见的三种循环引用

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