美文网首页
关于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中)

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

  • Controller销毁NSTimer释放的细节

    关于NSTimer释放和内存泄漏的问题。 @(NSTimer)[内存管理,NSTimer释放,循环引用] 首先需要...

  • iOS-NSTimer强引用

    当使用如上代码创建一个NSTimer之后会出现一个VC-> NSTimer->VC的循环引用。导致界面不能释放。 ...

  • 解决NSTimer 循环引用问题

    在ViewController 里面有一个NSTimer NStimer 中的target 强引用 VC,VC强引...

  • VC Dealloc

    当 VC 中存在 NSTimer 控件时,需要注意的是在退出当前 VC 时,需要将 NSTimer 的变量置成 n...

  • 内存泄露内存循环的解决方案

    1: NSTimer不能置零导致VC不释放。导致内存泄露 1.1 解决的实例方法一: 结果能不能释放控制器那, 有...

  • VC不走dealloc方法三种常见原因

    发现VC不走dealloc,如何检查原因? 1.VC中是否存在NSTimer?计时器是否销毁? 2.VC中的有关代...

  • NSTimer

    深入NSTimer(iOS)iOS 中的 NSTimer关于NSRunLoop和NSTimer的深入理解

  • controller dealloc不执行问题

    1,VC中使用了NSTimer计时器,使用计时器当VC进行push ——pop之后,如果NSTimer对象没有进行...

  • iOS --NStimer

    手动目录NSTimer 打破强持有的方法方法一: 在 viewWillDisappear 中释放NSTimer方法...

网友评论

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

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