美文网首页
NSTimer使用注意事项

NSTimer使用注意事项

作者: 在下有双 | 来源:发表于2017-08-09 15:32 被阅读0次

1.

scheduled开头和非schedule的开头方法的区别。系统框架提供了几种创建NSTimer的方法,其中以scheduled开头的方法会自动把timer加入当前run loop,到了设定的时间点就会触发指定的方法,而没有scheduled开头的方法则需要程序员自己手动添加到timer到一个run loop中才会有效。run loop在运行时一般有两个mode,一个defaultmode,一个trackingmode,正常情况下run loop使用defaultmode,scheduled生成的timer会默认添加到defaultmode中,当我们互动scrollview时,run loop切换到trackingmode运行,于是我们发现定时器失效了。为了使定时器在我们滑动scrollview时也能正常运行,我们需要确保defaultmode和trackingmode里都添加了我们生成的timer。如:

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:_timeInterval target:self selector:@selector(addone) userInfo:nil repeats:YES];
 [[NSRunLoop currentRunLoop] addTimer:timer forMode:UITrackingRunLoopMode];

或者:

NSTimer *timer = [NSTimer timerWithTimeInterval:_timeInterval target:self selector:@selector(addone) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:UITrackingRunLoopMode];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];

2.

使用NSTimer时,timer会保持对target和userInfo参数的强引用。只有当调取了NSTimer的invalidate方法时,NSTimer才会释放target和userInfo。生成timer的方法中如果repeats参数为NO,则定时器触发后会自动调取invalidate方法。如果repeats参数为YES,则需要程序员手动调取invalidate方法才能释放timer对target和userIfo的强引用。

3.

在使用repeats参数为YES的定时器时,如果在使用完定时器时后没有调取invalidate方法,导致target和userInfo没有被释放,则可能会形成循环引用情况,从而影响内存释放。

相关文章

  • NSTimer使用注意事项

    ##NSTimer使用注意事项 http://www.cnblogs.com/qmmq/p/5282982.htm...

  • NSTimer使用注意事项

    1. scheduled开头和非schedule的开头方法的区别。系统框架提供了几种创建NSTimer的方法,其中...

  • NSTimer使用注意事项

    NSTimer使用注意事项# 存在延迟## 不管是一次性的还是周期性的timer的实际触发事件的时间,都会与所加入...

  • NSTimer 使用注意事项

    NSTimer是ios上比较常用的定时器组件,在使用了一段时间后,发现有些地方是需要注意一下的。 NSTimer ...

  • 关于NSTimer使用的内存泄漏问题之主线程

    关于NSTimer的使用我一直处于模棱两可的状态,刚好近期项目中用到NSTimer,所以整理了一些注意事项并分享给...

  • iOS NSTimer使用注意事项

    NSTimer 是系统提供的定时器,系统提供的api也比较简单,使用很方便,项目开发中会经常用到。然而,在使用NS...

  • iOS开发定时器注意细节

    定时器经常用的有三类:NStimer、CADisplayLink和GCD定时器 NSTimer注意事项: 1,在使...

  • NSTimer的循环引用

    NSTimer基本使用 NSTimer与RunLoop NSTimer 循环引用的问题 如何在子线程使用NSTim...

  • iOS-NSTimer-循环引用问题

    在使用NSTimer的时候,NSTimer会生成指向其使用者的引用,而其使用者如果也引用了NSTimer,那么就会...

  • NSTimer的使用

    NSTimer 的使用 为什么会写NSTimer呢? 原因很简单, 这里有坑! NSTimer 使用的顺序 创建N...

网友评论

      本文标题:NSTimer使用注意事项

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