• NSTimer的循环引用


    在日常开发中想到会引起循环引用的一般比较容易想起的是

    1.delegate

    2.block

    今天要说的就是另外一个,NSTimer

    这个比较容易会被忽略掉

    简单的说就是创建timer为成员变量的时候target为self,

    在下面的代码是不会执行的

    - (void)dealloc {
         [self.timer invalidate];
    }

    self要在timer不执行的时候释放

    但是timer要在self释放时候释放

    然后就这么。。。悲剧了

    这个解决的办法应该有多

    我上网找了一个,也是大家比较常用的

    1.就是在外部调用 

    [self.timer invalidate];
    还有其他方法 欢迎大家指出哦

    刚才找着找着,又看到个有趣的 这里他的方法与其说是方法不如说是一个良好的习惯:“在 viewWillAppear 开启,在 viewWillDisappear 关闭”

     看到着我不禁感慨了一下,年纪大了 总是会回忆过去,哎

      记得做实习生的时候,这是很基本的规范,带我们的leader很严格,那时候还没有arc 新手的我们经常内存泄漏

    那时候几乎每天都会跑几次调试内存的工具没看一下是不是有问题,viewDidAppear,viewWillApper,这些函数经常被我们放一些“解决问题的代码”,

    那时候是知其然,不知其所以然,就是看到内存泄漏的柱子终于没有,哈哈 好开心但是为啥 不明白,大家就在一起瞎猜,现在想想以前那种的一切都好奇,一切都不懂的时光还有点美好呢。

    
    
    
    
  • 相关阅读:
    CentOS 6.4下Squid代理服务器的安装与配置
    从C++到objectivec[转]
    在Objectivec里面使用property教程【转】
    Socket常用的数据结构【转】
    iOS 5 Storyboard 学习之 Tabbar Controller,Navigation Controller (1)
    Linux Socket编程(不限Linux)
    重要的套接字函数[转]
    HTTP,TCP/IP
    网络编程socket之bind函数[转]
    linux 下遍历目录中的目录项
  • 原文地址:https://www.cnblogs.com/waiwaibuzhidao/p/7867155.html
Copyright © 2020-2023  润新知