object-c之计时器

主要代码:

 1 先设置一个定时器
 2 TimeInterval:设置时间间隔
 3 target:表示发送的对象
 4 selector:选择一个实例方法
 5 userInfo:此参数可以为nil,当定时器失效时,由你指定的对象保留和释放该定时器
 6
 7 [NSTimer scheduledTimerWithTimeInterval:2.0f target: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 @interface Timers : NSObject
14
15 @property(nonatomic,retain) NSTimer *timer;
16
17 - (void)startWrite;
18
19 @end
20
21
22 #import "Timers.h"
23
24 @implementation Timers
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:@"\n"];
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.0f target:self selector:@selector(doTimer:) userInfo:handle repeats:YES];
77
78 }
79 @end
时间: 2024-11-11 03:12:49

object-c之计时器的相关文章

C# 计时器的三种使用方法

在.net中有三种计时器,一是System.Windows.Forms命名空间下的Timer控件,它直接继承自Componet;二是System.Timers命名空间下的Timer类. Timer控件:Timer控件只有绑定了Tick事件,和设置Enabled=True后才会自动计时,停止计时可以用Stop()控制,通过Stop()停止之后,如果想重新计时,可以用Start()方法来启动计时器.Timer控件和它所在的Form属于同一个线程: System.Timers.Timer类:定义一个S

WebClient的超时问题及解决

WebClient的超时问题及解决 转自:http://blog.163.com/[email protected]/blog/static/62440288201112245345838/ Webclient在下载请求时无法设置请求超时时间和请求读写超时时间.WebClient在异步下载时遇到网络不通等问题时没有响应超时造成app挂起. 1.Webclient请求超时设置      重写Webclient的GetWebRequest方法,为HttpWebRequest添加请求超时及读写超时  

关于Matlab中用timer来实现多线程机制

Timer 计时器 MATLAB的计时器主要用于完成动画任务及定时任务. Construct timer object 构造一个计时器对象 Syntax T = timer T = timer('PropertyName1', PropertyValue1, 'PropertyName2', PropertyValue2,...) Discription T = timer constructs a timer object with default attributes. 利用默认属性构造一个

java监测方法运行时间/效率方法

前言: 这周在写一个小项目,虽然小但是是纯调外部接口的,调完了接口还不停的循环接口返回的数据(已转换JSONArray),然后再判断值,再做不同处理,关键是数据量还比较大,这刚做完还没开始上线,测试也还没开始测呢,就想着自己先看看每个方法运行效率,省的数据大了项目挂掉(循环判断好多,有时还有2个for嵌套循环),就是纯粹在时间上进行监测,没有内存和cpu的监控. 主要利用了Spring AOP 技术,对想要统计的方法进行横切处理,方法执行前开始计时,方法执行后停止计时,得到计时方法就是该方法本次

C#里面的三种Timer

 在.net中有三种计时器,一是System.Windows.Forms命名空间下的Timer控件,它直接继承自Componet;二是System.Timers命名空间下的Timer类. Timer控件:Timer控件只有绑定了Tick事件,和设置Enabled=True后才会自动计时,停止计时可以用Stop()控制,通过Stop()停止之后,如果想重新计时,可以用Start()方法来启动计时器.Timer控件和它所在的Form属于同一个线程: System.Timers.Timer类:定义

20165230 2017-2018-2 《Java程序设计》第8周学习总结

20165230 2017-2018-2 <Java程序设计>第8周学习总结 教材学习内容总结 第十二章 java多线程机制 一个进程在其执行过程中,可产生多个线程.线程是比进程更小的执行单位 JVM保证每个线程都有机会使用CPU资源,等到Java应用程序中的所有线程都结束后才结束应用程序 线程状态与生命周期 使用Thread类及其子类的对象表示线程 调用start()方法将线程加入JVM管理队列.调用以后不能再让线程调用start()方法 run()方法规定了线程的具体使命.方法执行完毕后线

20165333第八周学习总结

教材学习内容总结 第十二章 java多线程机制 一个进程在其执行过程中,可产生多个线程.线程是比进程更小的执行单位 JVM保证每个线程都有机会使用CPU资源,等到Java应用程序中的所有线程都结束后才结束应用程序 线程状态与生命周期 使用Thread类及其子类的对象表示线程 调用start()方法将线程加入JVM管理队列.调用以后不能再让线程调用start()方法 run()方法规定了线程的具体使命.方法执行完毕后线程变成死亡状态. -sleep(int millsecond)使线程进入休眠状态

Concurrent.Thread.js

(function(){ if ( !this.Data || (typeof this.Data != 'object' && typeof this.Data != 'function') ) this.Data = new Object(); if ( this.Data.Stack === undefined ) this.Data.Stack = undefined; with ( function(){ with ( Data ) { return function () {

从零开始学android&lt;chronometer计时器组件.三十二.&gt;

计时器来计算每个运动员所消耗的时间等,而在Android系统之中,这种计时的功能就可以使用Chronometer组件,此类的继承结构如下所示: 2java.lang.Object ? android.view.View ? android.widget.TextView ? android.widget.Chronometer 常见的方法 1 public Chronometer(Context context) 构造 创建Chronometer对象 2 public long getBase(

C# 计时器写法

    刚才一个交流群里有人问计时器怎么写,正好我也不太熟,就写了个demo,和大家分享一下这个是参考师傅的写的! 计时器有好多种写法,这里给大家推荐一个性能比较好的,用dispatchertimer做的,本demo是倒计时的,计时的将_seconds--改成++就可以了.不多说了,直接上代码. 1.这是界面,简单的xaml <Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <