ARC下内存泄露问题
来源:互联网 发布:js给input设置属性 编辑:程序博客网 时间:2024/05/29 11:43
iOS提供了ARC功能,很大程度上简化了内存管理的代码。
但使用ARC并不代表了不会发生内存泄露,使用不当照样会发生内存泄露。
下面列举两种内存泄露的情况。
1,循环参照
A有个属性参照B,B有个属性参照A,如果都是strong参照的话,两个对象都无法释放。
这种问题常发生于把delegate声明为strong属性了。
例,
@interface SampleViewController
@property (nonatomic, strong) SampleClass *sampleClass;
@end
@interface SampleClass
@property (nonatomic, strong) SampleViewController *delegate;
@end
上例中,解决办法是把SampleClass 的delegate属性的strong改为assing即可。
2,死循环
如果某个ViewController中有无限循环,也会导致即使ViewController对应的view关掉了,ViewController也不能被释放。
这种问题常发生于animation处理。
例,
比如,
CATransition *transition = [CATransition animation];
transition.duration = 0.5;
tansition.repeatCount = HUGE_VALL;
[self.view.layer addAnimation:transition forKey:"myAnimation"];
上例中,animation重复次数设成HUGE_VALL,一个很大的数值,基本上等于无限循环了。
解决办法是,在ViewController关掉的时候,停止这个animation。
-(void)viewWillDisappear:(BOOL)animated {
[self.view.layer removeAllAnimations];
}
内存泄露的情况当然不止以上两种。
即使用了ARC,我们也要深刻理解iOS的内存管理机制,这样才能有效避免内存泄露。
1.发生内存泄露实在找不出问题所在的话。。
将控件从视图上移除,并赋值为nil
[self.scrollview removeFromSuperView];
self.scrollview=nil;
持续更新中。。。
2.如果有代理的时候,需要把代理设成nil;
- ARC下内存泄露问题
- ARC下内存泄露问题
- ARC下内存泄露总结
- ARC 下的内存泄露
- iOS ARC 内存泄露问题
- iOS开发 ARC下造成内存泄露的问题
- ARC 下内存泄露的那些点
- ARC 下内存泄露的那些点
- ARC 下内存泄露的那些点
- iOS ARC下内存泄露 注意点
- ARC 下内存泄露的那些点
- ARC下可能的内存泄露
- IOS ARC下内存泄露总结
- arc依然内存泄露??!?!?!?!?!??
- ARC-分析内存泄露
- ARC中的内存泄露
- ARC下内存管理问题
- ARC下导致内存泄露的几种情况
- JAVA_WEB项目之在myecplise中如何利用DB Browser窗口连接mysql数据库之后根据表反向生成映射文件
- 使用状态机分析Single Number问题
- 常用Makefile模板
- Dropout原理,代码浅析
- sage开发url替换字符串
- ARC下内存泄露问题
- 归并排序C++版
- 软件工程师必学的9件事
- 存储方式SharePreferences
- 14解析函数(八)
- 如何开发出像Flappy Bird或2048那样受欢迎的轻游戏?
- 2014年移动端界面设计分析
- 优秀的程序员VS糟糕的程序员
- 二维数组 反转