亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

NSTImer重復執行任務

2019-11-14 19:58:52
字體:
來源:轉載
供稿:網友

問題

應用需要調度代碼以在特定的時間執行。此外,你還想要重復執行任務。

解決方案

使用NSTimer調度代碼以在特定的時間執行。為了使用NSTimer,你需要有日期對象與指向應用的運行循環的引用。

注意:

NSTimer需要有運行循環,如果想在Mac或iOS應用中使用定時器,就必須有運行循環。本攻略需要應用帶有運行循環。1.11與1.12節分別介紹了創建Mac與iOS應用的步驟。

說明

本攻略的代碼位于應用委托中。通常情況下,定時器會放在自定義類或是應用控制器中。

定時器會從特定的日期與時間開始向對象發送消息。如果應用需要重復,那么定時器可能會間隔一段時間后再發送消息。你首先需要有日期對象,用來表示定時器開始向對象發送消息的日期與時間:
NSDate *scheduledTime = [NSDate dateWithTimeIntervalSinceNow:10.0];

上述調度時間位于上面這一行代碼執行后的10秒鐘??梢栽谶@里使用任何日期。

接下來,通過initWithFireDate:interval:target:selector:userInfo:repeats:構造函數創建定時器:
SString *customUserObject = @"To demo userInfo";

NSTimer *timer = [[NSTimer alloc] initWithFireDate:scheduledTime
                                          interval:2
                                            target:self
                                          selector:@selector(task)
                                          userInfo:customUserObject
                                           repeats:YES];

這里有些內容需要說明一下。第1個參數是日期對象,指定了定時器何時變成活動狀態。接下來是間隔時間,是定時器再次發送消息前所需等待的秒數。之后是目標參數描述符,目標是方法所處的對象。selector參數是位于圓括號中的方法名,前面是@selector關鍵字。由于方法與定時器一樣都位于應用委托中,因此可以使用self關鍵字。

userInfo是定時器使用的自定義內容??梢允褂萌魏螌ο螅⑶铱梢垣@得正在執行的消息中的對象引用(上面的selector參數)。這里使用了字符串,但通常會使用字典或其他集合以支持更加復雜的活動。

repeats參數表示定時器是發送一次消息,還是根據第2個參數指定的時間間隔重復發送。

接下來需要指向運行循環的引用??梢酝ㄟ^NSRunLoop的currentRunLoop函數獲得該引用:
NSRunLoop *runLoop = [NSRunLoop currentRunLoop];

現在,只需要將定時器添加到運行循環中即可:
[runLoop addTimer:timer forMode:NSDefaultRunLoopMode];

10秒鐘后,定時器將會開始每隔兩秒鐘向應用發送task消息。

啟動之后,如果想停止定時器,可以向定時器發送invalidate消息。這會從運行循環中刪除定時器,代碼如下所示:
[timer invalidate];

參見程序清單5-7。

代碼

程序清單5-7 main.m
#import "AppDelegate.h"

@implementation AppDelegate
@synthesize window = _window;

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification{
    NSDate *scheduledTime = [NSDate dateWithTimeIntervalSinceNow:10.0];
    NSString *customUserObject = @"To demo userInfo";
    NSTimer *timer = [[NSTimer alloc] initWithFireDate:scheduledTime
                                              interval:2
                                                target:self
                                              selector:@selector(task)
                                              userInfo:customUserObject
                                               repeats:YES];
    NSRunLoop *runLoop = [NSRunLoop currentRunLoop];
    [runLoop addTimer:timer forMode:NSDefaultRunLoopMode];
}

-(void)task:(id)sender{
    NSTimer *localTimer = (NSTimer *)sender;
    NSLog(@"Schedule task has executed with this user info: %@", [localTimer  userInfo]);
}

@end

使用

要想使用上述代碼,請從Xcode構建并運行Mac應用。注意控制臺窗口以及消息何時開始打印到日志中。此處打印出了時間戳,這樣就可以看到時間間隔的運作方式了:
2012-01-19 15:23:28.651 Timer[31067:707] Schedule task has executed with  this user info: To demo userInfo
2012-01-19 15:23:30.651 Timer[31067:707] Schedule task has executed with  this user info: To demo userInfo
2012-01-19 15:23:32.651 Timer[31067:707] Schedule task has executed with  this user info: To demo userInfo


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国精品久久99热一| 欧美电影电视剧在线观看| 亚洲欧美日韩视频一区| 欧美一级bbbbb性bbbb喷潮片| 在线观看免费高清视频97| 日韩av网站在线| 国产999在线| 俺去啦;欧美日韩| 最新国产精品亚洲| 国产精品久久久久久久9999| 91av视频在线| 亚洲a∨日韩av高清在线观看| 中文字幕自拍vr一区二区三区| 精品一区二区三区四区| 日韩男女性生活视频| 热99精品里视频精品| 亚洲欧美中文在线视频| 国产在线视频91| 亚洲免费视频观看| 午夜精品久久久久久久99黑人| 黑人巨大精品欧美一区二区免费| 成人深夜直播免费观看| 欧美情侣性视频| 欧美激情视频一区二区三区不卡| 亚洲最新av在线网站| 亚洲欧美日韩中文视频| 国产中文日韩欧美| 色yeye香蕉凹凸一区二区av| 日韩av手机在线| 久久久中文字幕| 亚洲精品综合精品自拍| 国产日韩欧美自拍| 国产精品高精视频免费| 精品亚洲一区二区三区四区五区| 久久视频中文字幕| 亚洲香蕉成视频在线观看| 久久国产精品电影| 九九九久久久久久| 国产精品一区二区三区免费视频| 亚洲xxxx18| 中日韩美女免费视频网站在线观看| 精品国产依人香蕉在线精品| 成人国产精品色哟哟| 欧美激情网站在线观看| 亚洲xxxxx| 久久亚洲欧美日韩精品专区| 亚洲人精品午夜在线观看| 精品亚洲va在线va天堂资源站| 日韩av手机在线看| 黑人巨大精品欧美一区免费视频| 国产午夜精品一区二区三区| 亚洲区bt下载| 欧美成在线视频| 欧美日韩亚洲国产一区| 欧美日韩裸体免费视频| 97视频在线观看免费| 中日韩美女免费视频网站在线观看| 中文字幕精品www乱入免费视频| 久久久久久网站| 国产精品久久久久福利| 日韩亚洲精品电影| 欧美性猛交xxxx乱大交极品| 欧美富婆性猛交| 欧美一区二区三区艳史| 久久精品亚洲国产| 2024亚洲男人天堂| 亚洲国产精品系列| 欧美一级视频免费在线观看| 日韩欧美a级成人黄色| 91精品国产自产在线观看永久| 日本电影亚洲天堂| 国内精品免费午夜毛片| 国内精品一区二区三区四区| 亚洲成年网站在线观看| 尤物yw午夜国产精品视频| 亚洲电影在线看| 欧美专区福利在线| 一区二区三区四区在线观看视频| 国产精品扒开腿做爽爽爽男男| 日韩中文字幕在线精品| 免费91麻豆精品国产自产在线观看| 爱福利视频一区| 亚洲综合在线小说| 欧美黑人巨大精品一区二区| 国产精品白嫩初高中害羞小美女| www.欧美三级电影.com| 国产欧美一区二区三区视频| 亚洲精品一区中文| 亚洲成人精品视频| 久久av.com| 成人黄色激情网| 91精品国产高清久久久久久91| 国产亚洲人成a一在线v站| 91手机视频在线观看| 成人a级免费视频| 午夜精品久久久久久久久久久久| 黄色成人在线播放| 欧美成人午夜免费视在线看片| 成人xxxx视频| 国产成+人+综合+亚洲欧美丁香花| 欧美一区二区三区四区在线| 亚洲美腿欧美激情另类| 中文一区二区视频| 国色天香2019中文字幕在线观看| 亚洲欧美福利视频| 欧美精品18videos性欧| 亚洲另类激情图| 亚洲综合在线中文字幕| 久久久精品999| 日本精品视频在线| 欧美丰满老妇厨房牲生活| 国产97人人超碰caoprom| 日本精品视频在线播放| 日韩在线视频线视频免费网站| 亚洲欧洲一区二区三区久久| 日韩欧美在线中文字幕| 美女久久久久久久久久久| 国产精品丝袜久久久久久高清| 亚洲成人亚洲激情| 成人精品视频99在线观看免费| 日韩高清免费观看| 国产精品男人爽免费视频1| 麻豆国产精品va在线观看不卡| 欧美午夜激情视频| 亚洲天堂成人在线视频| 国内精品久久久久久影视8| 国内精品国产三级国产在线专| 韩国一区二区电影| 欧美性猛交xxxx富婆弯腰| 欧美精品xxx| 久久久精品一区二区| 一区二区欧美亚洲| 国产成人a亚洲精品| 国产一区二中文字幕在线看| 最好看的2019年中文视频| 情事1991在线| 日韩精品视频在线观看免费| 日韩精品极品毛片系列视频| 成人激情在线观看| 欧美日韩成人在线播放| 精品性高朝久久久久久久| 国产精品高潮呻吟久久av黑人| 亚洲国产欧美一区二区三区久久| 欧洲成人免费视频| 欧美激情亚洲自拍| 成人网欧美在线视频| 97视频免费看| 亚洲欧洲中文天堂| 久久精品电影网| 亚洲欧美另类中文字幕| 亚洲最大福利网| 日本久久久久久久久| 国产午夜一区二区| 国产一区二区美女视频| 免费97视频在线精品国自产拍| 欧美—级a级欧美特级ar全黄| 在线成人中文字幕| 中文字幕日韩综合av| 日韩中文视频免费在线观看| 91久久久久久久一区二区| 日韩暖暖在线视频| 国产中文欧美精品| 欧美理论电影网| 国产91色在线||