代码改变世界

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