NSTimer使用注意事项

作者: 赵奥勋 | 来源:发表于2016-03-30 16:45 被阅读569次

NSTimer使用注意事项#

存在延迟##

不管是一次性的还是周期性的timer的实际触发事件的时间,都会与所加入的RunLoop和RunLoop Mode有关,如果此RunLoop正在执行一个连续性的运算,timer就会被延时出发。重复性的timer遇到这种情况,如果延迟超过了一个周期,则会在延时结束后立刻执行,并按照之前指定的周期继续执行。

同一个timer在重复使用之前必需invalidate##

同一个timer在重复使用之前必需invalidate, 否则会造成之前的timer无法停掉,两个timer同时存在。导致的现象就是timer同时更新两次。

不要在dealloc函数中停止并释放NSTimer##

如果这样做,会导致对象永远无法调用dealloc函数,也就是会造成内存泄漏。一个比较合理的解释是NSTimer的回调方法具有retain属性,所以不停止它的情况下被引用对象的retainCount无法降为0,导致内存泄漏的死循环。

不用scheduled方式初始化的,需要将timer添加到runloop中##

NSTimer *myTimer = [NSTimer timerWithTimeInterval:3.0 target:self selector:@selector(timerFired:) userInfo:nilrepeats:NO];
[[NSRunLoopcurrentRunLoop] addTimer:myTimer forMode:NSDefaultRunLoopMode];

滑动UIScrollView的时候##

当RunLoop处于UITrackingRunLoopMode模式的时候(滑动UIScrollView的时候),使用

scheduledTimerWithTimeInterval:(NSTimeInterval)seconds
                    invocation:(NSInvocation *)invocation
                       repeats:(BOOL)repeats

的类方法创建的Timer,是不会收到响应事件。只有RunLoop切换到Default模式时才可以正常响应。如果希望滑动时也可以响应Timer时间,需要把Timer加到RunLoop并指定模式为NSRunLoopCommonModes。

相关文章

  • 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/rtqelttx.html