标签:
有以下三种初始化方法:
使用 scheduledTimerWithTimeInterval:invocation:repeats: 或者scheduledTimerWithTimeInterval:target:selector:userInfo:repeats: 这两个类方法创建一个timer并把它指定到一个默认的runloop模式中
使用 timerWithTimeInterval:invocation:repeats: 或者 timerWithTimeInterval:target:selector:userInfo:repeats:这两个类方法创建一个timer的对象,没有把它指定到run loop中. (当创建之后,你必须手动的调用NSRunLoop下对应的方法 addTimer:forMode: 去将它制定到一个runloop模式中.)
使用 initWithFireDate:interval:target:selector:userInfo:repeats: 方法分配并创建一个NSTimer的实例 (当创建之后,你必须手动的调用NSRunLoop下对应的方法 addTimer:forMode: 去将它制定到一个runloop模式中.)
可以通过初始化的轮询触发timer; 也可以手动触发,即使没有达到执行条件
[timer对象 fire];
[timer对象 setFireDate:[NSDate distantFuture]]; // 开启
[timer对象 setFireDate:[NSDate distantPast]]; // 关闭
实际上,在初始化的方法 initWithFireDate:interval:target:selector:userInfo:repeats: 中,就可以通过控制参数FireDate 初始化"开启状态的Timer"或者"关闭状态的Timer"
[timer对象 invalidate];
推荐在删除timer之前,判断一下待删除的timer是否在线程中,[timer对象 isValid] // 判断是否在线程中
if ([timer对象 isValid] == YES) {
[timer对象 invalidate];
timer对象 = nil;
}
[timer setFireDate:[NSDate date]]; // 继续
[timer setFireDate:[NSDate distantPast]]; // 开启
[timer setFireDate:[NSDate distantFuture]]; // 暂停
- (void)viewDidLoad {
[super viewDidLoad];
// 初始化方法一
[NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(timerStudy) userInfo:nil repeats:YES];
/* 初始化方法二
NSTimer *timer = [NSTimer timerWithTimeInterval:2.0 target:self selector:@selector(timerStudy) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
*/
/* 初始化方法三
NSTimer *timer2 = [[NSTimer alloc]initWithFireDate:[NSDate distantFuture] interval:2.0 target:self selector:@selector(timerStudy) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer2 forMode:NSDefaultRunLoopMode];
*/
}
static int count;
- (void)timerStudy
{
NSLog(@"%d",count);
}
标签:
原文地址:http://www.cnblogs.com/oumygade/p/4422987.html