IOS - NSTimer,同步系统时间
2015-08-18 21:07 HermitCarb 阅读(703) 评论(0) 编辑 收藏 举报个人对IOS里同步显示系统的时间的方式(或者说创建一个会定时触发的函数)有点不大适应,不过实现起来倒是比较简单。
NSTimer在apps中经常用来执行周期性任务。
IOS里创建定时执行的函数:
第一步:声明一个NSTimer变量和一个显示时间的控件
1 NSTimer *timer; 2 UILabel *timeLable;
第二步:页面的viewDidLoad或者viewWillappear函数里初始化这个变量,并指定其触发的函数;把lable加到视图中去
1 timer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timerFunc) userInfo:nil repeats:YES]; 2 timeLable = [[UILabel alloc] initWithFrame:CGRectMake(50, 200, 220, 40)]; 3 [self.viewaddSubview:timeLable];
第三步:实现上面声明的函数
1 - (void)timerFunc 2 { 3 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 4 [formatter setDateFormat:@"YY/MM/dd HH:mm:ss"]; 5 timeLable.text = [formatter stringFromDate:[NSDate date]]; 6 }
另附上NSTimer的常用属性和方法
1 #import <Foundation/NSObject.h> 2 #import <Foundation/NSDate.h> 3 4 @interface NSTimer : NSObject 5 //类级实例化方法,但还要手动设置addTimer:forModel:并将其添加到runloop中 6 + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo; 7 8 //类级实例化方法,建议使用这个方法进行实例化 9 + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti invocation:(NSInvocation *)invocation repeats:(BOOL)yesOrNo; 10 11 //下面两个个是类级实例化方法,都差不多的 12 + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; 13 14 + (NSTimer *)scheduledTimerWithTimeInterval:(NSTimeInterval)ti target:(id)aTarget selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)yesOrNo; 15 16 //初始化方法 17 - (id)initWithFireDate:(NSDate *)date interval:(NSTimeInterval)ti target:(id)t selector:(SEL)s userInfo:(id)ui repeats:(BOOL)rep; 18 19 //触发(使有效)timer 20 - (void)fire; 21 22 //timer开始时间,设置暂停和开始时会用到 23 - (NSDate *)fireDate; 24 25 //设置timer开始时间 26 - (void)setFireDate:(NSDate *)date; 27 28 //延迟时间(时间间隔) 29 - (NSTimeInterval)timeInterval; 30 31 //容忍属性,设置给系统一个参照说明这个计划允许延迟多长时间 32 - (NSTimeInterval)tolerance NS_AVAILABLE(10_9, 7_0); 33 34 //设置容忍属性 35 - (void)setTolerance:(NSTimeInterval)tolerance NS_AVAILABLE(10_9, 7_0); 36 37 //关闭(使失效)timer 38 - (void)invalidate; 39 40 //判断timer当前状态 41 - (BOOL)isValid; 42 43 //返回timer携带的用户信息(有兴趣可以搜索“IOS观察者模式”) 44 - (id)userInfo; 45 46 @end
追不到的梦你换一个不就得了。