03-NSTimer的简单使用
来源:互联网 发布:java解压包的后缀 编辑:程序博客网 时间:2024/05/01 08:43
帮忙看了一个程序,他以为是委托用错了,打印不出信息,我发现委托并没有用错,是他在函数里边的定时器没有正确使用,示例:
-(void)need{ [NSTimer timerWithTimeInterval:2 target:self selector:@selector(wantNeed:) userInfo:nil repeats:YES];}在这个need方法中,他使用了NSTimer的类方法+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;进行初始化,想要每隔2s调用一次wantNeed:方法,他写的这个方法并不能实现。
故修改如下:
-(void)need{ NSTimer *timer = [NSTimer timerWithTimeInterval:2 target:self selector:@selector(wantNeed:) userInfo:nil repeats:YES];//该类方法需要手动addTimer:forMode: 将timer添加到一个runloop中。 NSRunLoop *runLoop = [NSRunLoop currentRunLoop];//获得当前thread的Run loop //现在,只需要将定时器添加到运行循环中即可: [runLoop addTimer:timer forMode:NSDefaultRunLoopMode];}
后来查了一下资料,发现这样更简单:
-(void)need{ [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(wantNeed:) userInfo:nil repeats:YES];//scheduled的初始化方法将以默认直接添加到当前的runloop中.}
自己总结一下NSTimer的使用方法:
+ (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
参数详解:
scheduledTimerWithTimeInterval:(NSTimeInterval)seconds
设置一个时间间隔,以秒为单位,一个>0的浮点类型的值,如果该值<0,系统会默认为0.1
target:(id)aTarget
表示发送的对象,如self
selector:(SEL)aSelector
方法选择器,在时间间隔内,选择调用一个实例方法
userInfo:(id)userInfo
此参数可以为nil,当定时器失效时,由你指定的对象保留和释放该定时器。
repeats:(BOOL)yesOrNo
当YES时,定时器会不断循环直至失效或被释放,当NO时,定时器会循环发送一次就失效。
- (instancetype)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)ti target:(id)t selector:(SEL)s userInfo:(id)ui repeats:(BOOL)repNS_DESIGNATED_INITIALIZER;
该实例方法与上面的方法功能类似,多了一个date参数,该参数是设置第一次fire的时间(多少时间后触发,s为单位)。- (void)fire;
其实他并不是真的启动一个定时器,从之前的初始化方法中我们也可以看到,建立的时候,在适当的时间,定时器就会自动启动。那这个方法是干什么的呢。fire并不是启动一个定时器,只是提前触发而已,调用该方法不会改变fireDate。
- (void)invalidate;
//如果定时器在运行if ([self.timer isValid]) {//取消定时器[timer invalidate];timer = nil;}
停止timer的运行,但这个是永久的停止:(注意:停止后,一定要将timer赋空,否则还是没有释放。)
要想实现:先停止,然后再某种情况下再次开启运行timer,可以浏览这篇文章。
- 03-NSTimer的简单使用
- NSTimer的简单使用
- NSTimer的简单使用
- NSTimer的简单使用
- iOS NSTimer的简单使用
- 定时器NSTimer的简单使用
- 定时器NSTimer的简单使用和停止
- ios NSTimer计时器的简单使用
- 关于NSTimer的认识和简单使用
- NSTimer简单使用
- NSTimer简单使用
- NSTimer使用简单例子
- NSTimer定时器的简单用法/NSTimer Instance
- NSTimer的使用以及 史上最简单的,NSTimer暂停和继续
- NSTimer的使用以及 史上最简单的,NSTimer暂停和继续
- NSTimer的使用以及 史上最简单的,NSTimer暂停和继续
- NSTimer的使用以及 史上最简单的,NSTimer暂停和继续
- iOS——NSTimer的使用,计时器的简单创建
- 好题flag-(7.18)
- recommend
- 哈工大操作系统实验6—内存管理
- POJ 3322 Bloxorz I
- C# Action和Func
- 03-NSTimer的简单使用
- 1.文件IO函数练习及注意事项
- HDU 1159 Common Subsequence
- HDU 1243 反恐训练营
- 自动取款机中的秘钥介绍
- 学生反馈
- 1087 1 10 100 1000
- java static关键字
- HDU 1080 Human Gene Functions