IOS 防止内存泄漏

  • NSTimer: self 持有 timer,timer 在初始化时持有 self,造成循环引用。 解决的方法就是,在dealloc方法以外,使用 invalidate 方法销掉 timer。
- (void)removeFromSuperview //timer 在UIView中
{
    [timer invalidate];
    timer = nil;

    [super removeFromSuperview];
}

- (void)viewDidDisappear:(BOOL)animated // timer in UIViewController
{
    [self.timer invalidate];
    self.timer = nil;
    
    [super viewDidDisappear:animated];
}
  • block : block中使用self时,会导致self,block的互相持有,无法释放。解决方法是:在block中使用self的弱引用。
__weak typeof(self) weakSelf = self;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • # 前言 反复地复习iOS基础知识和原理,打磨知识体系是非常重要的,本篇就是重新温习iOS的内存管理。 内存管理是...
    Vein_阅读 4,239评论 0 2
  • 目录 属性 修饰词 循环引用 typeof与typedef 1. 属性 objc所有类和对象都是c结构体,cate...
    Ryan___阅读 2,732评论 0 1
  • iOS中计时器常用的有两种方式 使用NSTimer类(Swift 中更名为 Timer) NSTimer 常用的初...
    superDg阅读 5,834评论 0 1
  • 在 iOS 5之前使用的都是 MRC,需要程序员自己去 Retain,Release,这样一不注意会经常产生内存泄...
    高手世界阅读 3,047评论 0 0
  • 一直觉得自己的倔强有千万种的理由,可是在一些人面前总是没了底气,剩下了怀疑,不知道这样好不好。打心里却从未改变过这...
    默阡阅读 2,688评论 0 1

友情链接更多精彩内容