创建一个 Timer
- + scheduledTimerWithTimeInterval: invocation: repeats:
- + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
- + scheduledTimerWithTimeInterval: target: selector: userInfo: repeats:
- + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
- 创建返回一个新的NSTimer对象和时间表,在当前的默认模式下循环调用一个实例方法。
- + timerWithTimeInterval: invocation: repeats:
- + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo;
- + timerWithTimeInterval: target:selector: userInfo:repeats:
- + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo;
- – initWithFireDate: interval: target: selector: userInfo: repeats:
- - (id)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)ti target:(id)t selector:(SEL)s userInfo:(id)ui repeats:(BOOL)rep;
scheduledTimerWithTimeInterval:(NSTimeInterval)seconds
预订一个Timer,设置一个时间间隔。
表示输入一个时间间隔对象,以秒为单位,一个>0的浮点类型的值,如果该值<0,系统会默认为0.1
target:(id)aTarget
表示发送的对象,如self
selector:(SEL)aSelector
方法选择器,在时间间隔内,选择调用一个实例方法
userInfo:(id)userInfo
此参数可以为nil,当定时器失效时,由你指定的对象保留和释放该定时器。
repeats:(BOOL)yesOrNo
当YES时,定时器会不断循环直至失效或被释放,当NO时,定时器会循环发送一次就失效。
invocation:(NSInvocation *)invocation
启动 Timer
- – fire
停止 Timer
- – invalidate
Timer设置
- – isValid
- – fireDate
- – setFireDate:
- – timeInterval
- – userInfo
NSTimeInterval类:是一个浮点数字,用来定义秒
例子:
iphone为我们提供了一个很强大得时间定时器 NSTimer
他可以完成任何定时功能:
我们使用起来也很简单,只要记住三要素就可以,具体得三要素是:时间间隔NSTimeInterval浮点型,事件代理
delegate和事件处理方法@selector();就可以用
+ (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; 来初始化一个 时间定时器
下面我写了一个很简单得例子
初始化一个定时器:
-(void)initTimer
{
//时间间隔
NSTimeInterval timeInterval =1.0 ;
//定时器
NSTimer showTimer = [NSTimer scheduledTimerWithTimeInterval:maxShowTime
target:self
selector:@selector(handleMaxShowTimer:)
userInfo:nil
repeats:NO];
}
//触发事件
-(void)handleMaxShowTimer:(NSTimer *)theTimer
{
NSDateFormatter dateFormator = [[NSDateFormatter alloc] init];
dateFormator.dateFormat = @"yyyy-MM-dd HH:mm:ss";
NSString *date = [dateformater stringFromDate:[NSDate date]];
if([date isEqualToString:@"2011-11-09 23:59:59"])
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:TITLE_NAME
message:@"现在马上就有新的一天了!"
delegate:self
ancelButtonTitle:nil
otherButtonTitles:CONFIRM_TITLE, nil];
[alert show];
[alert release];
}
[data release];
[dateFormator release];
}
另外附一个例子:方框赛跑
-(void)viewDidLoad
{
[super viewDidLoad];
CGRect workingFrame;
workingFrame.origin.x = 15;
workingFrame.origin.y = 400;
workingFrame.size.width = 40;
workingFrame.size.height = 40;
for(int i = 0; i < 6; i++)
{
UIView *myView = [[UIView alloc] initWithFrame:workingFrame];
[myView setTag:i];//标记方块
[myView setBackgroundColor:[UIColor blueColor]];
workingFrame.origin.x = workingFrame.origin.x + workingFrame.size.width + 10;
[self.view addSubview:myView];
}
}
倒计时例子
使用NSTimer实现倒计时的一个例子:
-(void)viewDidLoad中添加如下代码,每秒出发一次
[NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFireMethod:) userInfo:nil repeats:YES]; //使用timer定时,每秒触发一次,然后就是写selector了。
{
NSCalendar *cal = [NSCalendar currentCalendar];//定义一个NSCalendar对象
NSDateComponents *endTime = [[NSDateComponents alloc] init]; //初始化目标时间...奥运时间好了
[endTime setYear:2008];
[endTime setMonth:8];
[endTime setDay:8];
[endTime setHour:8];
[endTime setMinute:8];
[endTime setSecond:8];
NSDate *todate = [cal dateFromComponents:endTime]; //把目标时间装载入date
[endTime release];
NSDate *today = [NSDate date]; //得到当前时间
//用来得到具体的时差
unsigned int unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit;
NSDateComponents *d = [cal components:unitFlags fromDate:today toDate:todate options:0];
NSLog(@"%d年%d月%d日%d时%d分%d秒",[d year],[d month], [d day], [d hour], [d minute], [d second]);
}