IOS 常见的循环引用总结

介绍:
循环引用,指的是多个对象相互引用时,使得引用形成一个环形,导致外部无法真正是否掉这块环形内存。其实有点类似死锁。
举个例子:A->B->C->....->X->B ->表示强引用,这样的B的引用计数就是2,假如A被系统释放了,理论上A会自动减小A所引用的资源,就是B,那么这时候B的引用计数就变成了1,所有B无法被释放,然而A已经被释放了,所有B的内存部分就肯定无法再释放再重新利用这部分内存空间了,导致内存泄漏。
情况一:delegate
Delegate是ios中开发中最常遇到的循环引用,一般在声明delegate的时候都要使用弱引用weak或者assign
@property (nonatomic, weak, nullable) id <UITableViewDelegate> delegate;
当然怎么选择使用assign还是weak,MRC的话只能用assign,在ARC的情况下最好使用weak,因为weak修饰的变量在是否后自动为指向nil,防止不安全的野指针存在
情况二:Block
Block也是比较常见的循环引用问题,在Block中使用了self容易出现循环引用,因此很多人在使用block的时候,加入里面有用到self的操作都会声明一个__weak来修饰self。其实便不是这样的,不是所有使用了Block都会出现Self循环引用问题,只有self拥有Block的强引用才会出现这种情况。
所以一般在函数中临时使用Block是不会出现循环应用的,因为这时候Block引用是属于栈的。当栈上的block释放后,block中对self的引用计数也会减掉
当然不一定要Self对Block有直接的引用才会出现,假如self的变量B,B中有个Block变量,就容易出现这种情况,好的是在block出现循环引用的,xcode7会出现警告提示(之前版本不确定)。
情况三:NSTimer
这是一个神奇的NSTimer,当你创建使用NSTimer的时候,NSTimer会默认对当前self有个强引用,所有在self使用完成打算是否的时候,一定要先使用NSTimer的invalidate来停止是否时间控制对self的引用
[_timer invalidate];
总结:
上面说的是我们常见的,其实循环引用就是说我们的强引用形成了闭环,还会有很多自己写的代码中会出现,平时还是要注意写法。当然xcode的instruments也能帮助到大家排除一些这样类似的内存问题。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# IOS
# 常见的循环引用
# 循环引用
# iOS面试中如何优雅回答Block导致循环引用的问题
# 有个
# 这种情况
# 死锁
# 的是
# 才会出现
# 这时候
# 使用了
# 是在
# 闭环
# 也会
# 都要
# 多个
# 有很多
# 还会
# 也能
# 很多人
# 当你
# 这是一个
# 形成了
# 这部
相关文章:
手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?
如何在云虚拟主机上快速搭建个人网站?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何使用Golang table-driven基准测试_多组数据测量函数效率
如何获取免费开源的自助建站系统源码?
建站之星安全性能如何?防护体系能否抵御黑客入侵?
公司网站设计制作厂家,怎么创建自己的一个网站?
c# 在ASP.NET Core中管理和取消后台任务
h5在线制作网站电脑版下载,h5网页制作软件?
建站之星备案是否影响网站上线时间?
如何通过VPS建站实现广告与增值服务盈利?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
如何在七牛云存储上搭建网站并设置自定义域名?
装修招标网站设计制作流程,装修招标流程?
C#如何序列化对象为XML XmlSerializer用法
,柠檬视频怎样兑换vip?
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
,怎么在广州志愿者网站注册?
如何在阿里云香港服务器快速搭建网站?
如何选购建站域名与空间?自助平台全解析
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
在线教育网站制作平台,山西立德教育官网?
如何做网站制作流程,*游戏网站怎么搭建?
如何在Golang中指定模块版本_使用go.mod控制版本号
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
内网网站制作软件,内网的网站如何发布到外网?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
独立制作一个网站多少钱,建立网站需要花多少钱?
如何选择适配移动端的WAP自助建站平台?
怀化网站制作公司,怀化新生儿上户网上办理流程?
微课制作网站有哪些,微课网怎么进?
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
建站三合一如何选?哪家性价比更高?
高防服务器:AI智能防御DDoS攻击与数据安全保障
如何在云指建站中生成FTP站点?
如何构建满足综合性能需求的优质建站方案?
如何挑选优质建站一级代理提升网站排名?
外贸公司网站制作哪家好,maersk船公司官网?
如何在服务器上三步完成建站并提升流量?
广州网站建站公司选择指南:建站流程与SEO优化关键词解析
如何用PHP工具快速搭建高效网站?
建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略
建站之星如何保障用户数据免受黑客入侵?
青岛网站建设如何选择本地服务器?
专业公司网站制作公司,用什么语言做企业网站比较好?
建站之星后台密码如何安全设置与找回?
*请认真填写需求信息,我们会在24小时内与您取得联系。