標籤:
主要代碼:
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 *)timer11 {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.h11 #import <Foundation/Foundation.h>12 13 @interface Timers : NSObject14 15 @property(nonatomic,retain) NSTimer *timer;16 17 - (void)startWrite;18 19 @end20 21 22 #import "Timers.h"23 24 @implementation Timers25 26 static int num = 0;27 28 29 - (void)doTimer:(NSTimer *)timer30 {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)startWrite61 {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
object-c之計時器