美文网首页iOS技术点汇总
ARC下内存泄露的几种情况

ARC下内存泄露的几种情况

作者: dacheng | 来源:发表于2016-07-13 17:00 被阅读66次
  1. delegate设为strong造成的内存泄露(两个对象相互强引用)

  2. NSTimer 造成的内存泄露(两个对象相互强引用)
    self 持有 timer,timer 在初始化时持有 self,造成循环引用

// * interface@interface SomeViewController : UIViewController
@property (nonatomic, strong) NSTimer *timer;
@end
//* implementation@implementation SomeViewController
  - (void)someMethod
{
   timer = [NSTimer scheduledTimerWithTimeInterval:0.1                                             target:self  
                                          selector:@selector(handleTimer:)  
                                          userInfo:nil  
                                           repeats:YES];  
}
@end

解决的方法就是使用 invalidate 方法销毁掉 timer

  1. 死循环造成的内存泄露
 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];
}
  1. 非oc方法开辟的堆内存造成的泄露
    使用malloc new 等非oc方法开辟的堆内存,需要使用对应的回收方法回收内存,arc不会自动回收这些内存。

相关文章

  • 内存泄漏/管理

    ARC 下内存泄露的那些点performSelector延时调用导致的内存泄露iOS ARC下几种导致内存泄露的场...

  • ARC下内存泄露的几种情况

    delegate设为strong造成的内存泄露(两个对象相互强引用) NSTimer 造成的内存泄露(两个对象相互...

  • ARC内存泄露的情况

    ARC(Automatic Reference Counting),是iOS 5推出的新功能。为了解决MRC管理下...

  • [Swift]学习笔记--内存管理

    Swift中的内存是自动管理的(ARC),但是在有些情况下,还是会引起内存泄露的,下面就来记录一下哪些情况需要我们...

  • iOS性能优化:Instruments使用实战

    这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存泄露,以及NSZombieEnabl...

  • 增强iOS应用程序性能方法

    1. 使用ARC进行内存管理 ARC除了能避免内存泄露外,还有助于程序性能的提升 2.在适当的情况下使用reuse...

  • 使用富文本OHAttributedLabel

    使用教程: 请在arc下使用,不要arc与mrc混用造成内存泄露! 源码地址 http://pan.baidu....

  • 06.3-OC中block的copy操作

    block的copy操作 在ARC环境下,编译器会根据情况自动地将栈内存上的block拷贝到堆内存上,以下几种情况...

  • ARC下内存泄露总结

    1、Block的循环引用   在iOS4.2时,Apple推出ARC内存管理机制。这是一种编译期的内存管理方式,在...

  • ARC 下内存泄露的那些点

    ARC 下内存泄露的那些点 一、block 系列 在 ARC 下,当 block 获取到外部变量时,由于编译器无法...

网友评论

    本文标题:ARC下内存泄露的几种情况

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