IOS开发—NSTimer

创建timer对象的三种方法

一、这两个类方法创建一个timer并把它指定到一个默认的runloop模式中
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

二、这两个类方法创建一个timer的对象,不把它指定到哪个runloop. (当创建之后,你必须手动的调用NSRunLoop下对应的方法 addTimer:forMode: 去将它指定到一个runloop模式中.)
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;

三、创建一个NSTimer的实例 (当创建之后,你必须手动的调用NSRunLoop下对应的方法 addTimer:forMode: 去将它指定到一个runloop模式中.)
- (instancetype)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)ti target:(id)t selector:(SEL)s userInfo:(id)ui repeats:(BOOL)rep- 

通常使用

+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;

TimeInterval:时间间隔,浮点型的值。小于0时系统默认为0.1。用于指定没间隔该时间段触发一次指定的方法
target:方法作用对象 比如self 
selector:作用方法
userInfo:当定时器失效时,由你指定的对象保留和释放该定时器。通常为nil
repeats:YES时,不断循环直至计时器失效或被释放。NO时只循环一次就失效

其余方法介绍

- (void)fire;立即触发计时器
- (void)invalidate;停止计时并使触发器失效
- (BOOL)isValid;判断触发器是否有效
- (NSTimeInterval)timeInterval;触发间隔时间
- (id)userInfo;一般为nil
- (NSDate *)fireDate;//开始时间
- (void)setFireDate:(NSDate *)date;//设置fireData,其实暂停、开始会用到

定时器暂停与开始的简要写法

[timer setFireDate:[NSDate distantPast]];//开启
[timer setFireDate:[NSDate date]]; //继续。
[timer setFireDate:[NSDate distantFuture]];//暂停
暂停之后计时器仍然有效,而如果用invalidate则会失效

在invalidate之前最好先用isValid先判断是否还在线程中

if ([timer isValid] == YES) {
        [timer invalidate];
        timer = nil;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值