object-c之计时器

摘要:
13//计时器失效14[timerinvalidate];1516}17181920主函数2122[timerstartWrite];23//添加到runloop中后,该定时器将在初始化时指定的timeInterval秒后自动触发。

主要代码:

1 先设置一个定时器
2 TimeInterval:设置时间间隔
3 target:表示发送的对象
4 selector:选择一个实例方法
5 userInfo:此参数可以为nil,当定时器失效时,由你指定的对象保留和释放该定时器
6 
7 [NSTimer scheduledTimerWithTimeInterval:2.0ftarget:self selector:@selector(doTimer:) userInfo:handle repeats:YES];
8 
9 
10 - (void)doTimer:(NSTimer *)timer
11 {
12 ……
13 //计时器失效
14 [timer invalidate];
15 
16 }
17 
18 
19 
20 主函数
21 
22 [timer startWrite];
23 //添加到runloop中后,该定时器将在初始化时指定的timeInterval秒后自动触发。
24 [[NSRunLoop currentRunLoop]run];

完整代码:

1 main.m
2 
3         
4         Timers *timer =[[Timers alloc]init];
5         
6 [timer startWrite];
7         
8 [[NSRunLoop currentRunLoop]run];
9 
10 Timer.h
11 #import <Foundation/Foundation.h>
12 
13 @interfaceTimers : NSObject
14 
15 @property(nonatomic,retain) NSTimer *timer;
16 
17 - (void)startWrite;
18 
19 @end
20 
21 
22 #import "Timers.h"
23 
24 @implementationTimers
25 
26 static int num = 0;
27 
28 
29 - (void)doTimer:(NSTimer *)timer
30 {
31     //处理问题
32     num++;
33     NSFileHandle *handle =[timer userInfo];
34     NSDate *date =[NSDate date];
35     //设置日期格式
36     NSDateFormatter *formatter =[[NSDateFormatter alloc]init];
37     [formatter setAMSymbol:@"上午"];
38     [formatter setPMSymbol:@"下午"];
39     [formatter setDateFormat:@"YYYY年MM月dd日 HH:mm:ss EEE aaa"];
40     
41     //日期格式化
42     NSString *time =[formatter stringFromDate:date];
43     //添加换行
44     NSString *time1 = [time stringByAppendingString:@""];
45     
46     NSData *data =[time1 dataUsingEncoding:NSUTF8StringEncoding];
47     //光标移到文件末尾
48 [handle seekToEndOfFile];
49     //写入数据
50 [handle writeData:data];
51     
52     if (num>=5)
53 {
54 [timer invalidate];
55         NSLog(@"哈哈哈");
56         //[handle closeFile];
57 }
58 }
59 
60 - (void)startWrite
61 {
62     //数据存储路径
63     NSString *path = @"/Users/scjy/Desktop/刘二龙练习/OC/练习1/日期写入/日期写入/dateInsert.txt";
64     
65     NSFileManager *filemanger =[NSFileManager defaultManager];
66     if (![filemanger fileExistsAtPath:path])
67 {
68         //如果文件不存在,创建文件
69 [filemanger createFileAtPath:path contents:nil attributes:nil];
70         
71 }
72     
73     //准备写入
74     NSFileHandle *handle =[NSFileHandle fileHandleForWritingAtPath:path];
75     
76     [NSTimer scheduledTimerWithTimeInterval:2.0ftarget:self selector:@selector(doTimer:) userInfo:handle repeats:YES];
77     
78 }
79 @end

免责声明:文章转载自《object-c之计时器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇无限极分类SQL语句-create语句下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

iOS开发日记16-通知栏扩展 (App Extension)

今天博主有一个App Extension的需求,遇到了一些困难点,在此和大家分享,希望能够共同进步. 总览 扩展 (Extension) 是 iOS 8 和 OSX 10.10 加入的一个非常大的功能点,开发者可以通过系统提供给我们的扩展接入点 (Extension point) 来为系统特定的服务提供某些附加的功能。对于 iOS 来说,可以使用的扩展接入...

countdown(倒计时)具体需求分析(NABCD)

N(Need,需求) 我们了解到一些记忆力不好或者是没有固定目标激励的用户的痛苦,他们需要有一个人在他们忙的不可开交焦头烂额的时候提醒他们接下来要做的事,或者是一些有重大考试的用户提醒,给他们一些压力和固定目标,但是现有的方案并没有很好地解决这些需求,我们这款计时器是为了让他们记住一些重要的场合时间以及目标而设计。 A(Approach,做法) 我们这款计...

基于状态机的单片机按键短按长按功能的实现

转载自:http://m.elecfans.com/article/608499.html发表于 2017-12-28 08:43:46 控制/MCU +关注 1、引言 在自己在科研实践和对学生教学中发现,现在单片机学习中对于按键处理的方法都是:检测按键、延时消抖、按键执行、等待释放,整个按键处理的程序中大量出现“delay_1ms(5);”和“...

C#中精确计时的一点收获

以下所有代码运行环境:Windows 2003, Intel(R) Core(TM) 2 Duo CPU E8400@ 3.00GHz 2.99GHz,2.96GB内存 根据综合网上的一些文章,精确计时主要有以下几种方式 1 调用WIN API中的GetTickCount [DllImport("kernel32")] static extern uin...

java定时器的使用(Timer)

java定时器的使用(Timer) 1、在应用开发中,常常须要一些周期性的操作,比方每5分钟运行某一操作等。 对于这种操作最方便、高效的实现方式就是使用java.util.Timer工具类。 private java.util.Timer timer; timer = new Timer(true); timer.schedule( new java.u...

[转]web计时机制——performance对象

页面性能一直都是Web开发人员比较关注的领域。但在实际应用中,度量页面性能的指标,是javascript的Date对象。Web Timing API改变了这个局面,让开发人员通过javascript就能使用浏览器内部的度量结果,给出了页面加载和渲染过程的很多信息,对性能优化非常有价值。本文将详细介绍web Timing API——performance对...