美文网首页
关于NSTimer的释放(UIView和VC中)

关于NSTimer的释放(UIView和VC中)

作者: DonfexCui | 来源:发表于2018-03-16 11:49 被阅读0次

    今天检测内存泄漏发现一个子view不执行dealloc方法,查找资料后发现跟NSTimer有关,做下笔记:

    平时我们用NSTimer时,习惯在dealloc方法中把它invalidate掉并置nil,但是发现这样写并没有作用,NSTimer所在的类并没有被释放掉,而是继续执行NSTimer的方法。

    所以,我们应该在要释放NStimer所在类之前,invalidate它。

    1.在UIView中

     可以写在

    - (void)willMoveToSuperview:(UIView *)newSuperview中,这个方法是把view添加到父控件或从父控件移除掉时会调用。

    2.UIViewController中

    如果是push在

    - (void)willMoveToParentViewController:(UIViewController *)parent 中释放timer。

    如果是present在

    - (void)dismissViewControllerAnimated:(BOOL)flag completion:(void(^)(void))completion 中释放timer

    ps:如果是vc,在willDismiss中释放也行。

    相关文章

      网友评论

          本文标题:关于NSTimer的释放(UIView和VC中)

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