iOS内存循环引用
来源:互联网 发布:js函数not defined 编辑:程序博客网 时间:2024/06/02 00:12
有朋友问循环引用的问题让我解释下,,我在这里解释下
内存循环引用,可以理解为a引用b b又引用了a 双方都保持相对引用,引用计数永远都不为0,始终无法释放,拼房push 之后内存暴增,app容易内存警告
容易造成内存循环引用的情况
1,计时器NSTimer
计时器需要在不用的时候手动写方法释放掉
2,block
block在copy时都会对block内部用到的对象进行强引用(ARC)或者retainCount增1(非ARC)。在ARC与非ARC环境下对block使用不当都会引起循环引用问题,一般表现为,某个类将block作为自己的属性变量,然后该类在block的方法体里面又使用了该类本身,简单说就是self.someBlock = ^(Type var){[self dosomething];或者self.otherVar = XXX;或者_otherVar = ...};block的这种循环引用会被编译器捕捉到并及时提醒。
ARC环境下可以通过使用_weak声明一个代替self的新变量代替原先的self,我们可以命名为weakSelf。通过这种方式告诉block,不要在block内部对self进行强制strong引用
3,delegate
代理的初始化用weak,,,
0 0
- iOS内存循环引用
- iOS内存管理之循环引用
- IOS内存管理的经典问题(循环引用)
- IOS Block循环引用的内存泄漏问题
- iOS ARC内存管理循环引用的问题
- iOS内存话题: 实例变量造成的循环引用
- iOS容易造成循环引用的三种场景,(循环引用),内存泄漏
- ios避免循环引用
- iOS循环引用
- ios delegate循环引用
- iOS之循环引用
- iOS 循环引用问题
- ios中的循环引用
- iOS解决循环引用
- iOS 循环引用
- iOS 循环引用问题
- iOS循环引用问题
- iOS循环引用
- java获取系统硬件信息的第三方jar包
- c# webservice上传下载
- PHP设计模式-装饰模式实现非侵入式缓存
- 内向、不善社交的人如何建立人脉?
- iOS学习之UINavigationController详解与使用(三)ToolBar
- iOS内存循环引用
- ThreadLocal的简单理解
- mongo 3 用户名跟密码创建
- 关于方向传值那点儿四儿(一)delegate
- 内向 人脉
- 面试笔试杂项积累-leetcode 26-30
- java提取json格式字符串
- EL表达式/JSTL复习总结
- NYOJ 497-排队打饭