中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

iOS定時器-- NSTimer&GCD定時器

iOS
小云
101
2023-09-21 10:23:01
欄目: 編程語言

在iOS中,我們可以使用NSTimer或者GCD來實現定時器功能。

  1. NSTimer:

NSTimer是Foundation框架中的一個類,可以用來創建定時器。它的使用相對簡單,可以通過指定時間間隔和重復次數來創建一個定時器,并且可以指定定時器觸發后要執行的方法。

例如,我們可以使用NSTimer來創建一個每隔1秒執行一次的定時器:

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];

上述代碼中,scheduledTimerWithTimeInterval方法用來創建一個定時器,第一個參數指定了時間間隔,第二個參數是指定定時器觸發后要調用的方法,第三個參數可以傳遞一些附加信息給定時器的回調方法,最后一個參數repeats指定了定時器是否重復執行。

  1. GCD定時器:

GCD(Grand Central Dispatch)是蘋果提供的一種多核編程的解決方案,可以用來創建定時器。GCD的定時器相對于NSTimer更加靈活,可以在主線程或者后臺線程中執行任務,并且可以通過設置dispatch_source_set_timer的參數來實現不同的定時器行為(比如只執行一次或者重復執行)。

例如,我們可以使用GCD來創建一個每隔1秒執行一次的定時器:

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer, ^{
// 定時器觸發后要執行的任務
});
dispatch_resume(timer);

上述代碼中,我們先創建了一個GCD定時器,然后使用dispatch_source_set_timer方法設置了定時器的參數,其中第一個參數指定了定時器的類型為DISPATCH_SOURCE_TYPE_TIMER,第二個參數是一個時間參數,指定了定時器第一次觸發的時間,第三個參數是時間間隔,指定了定時器觸發的間隔時間,最后一個參數指定了定時器的精度。最后,我們通過dispatch_source_set_event_handler方法設置了定時器觸發后要執行的任務,并通過dispatch_resume方法啟動了定時器。

需要注意的是,在使用NSTimer或GCD定時器時,如果在需要執行的任務中需要更新UI,需要在主線程中執行更新操作。

0
永定县| 盐边县| 桓仁| 扎囊县| 江津市| 翁牛特旗| 个旧市| 阿拉尔市| 宣威市| 三江| 河东区| 根河市| 民勤县| 南昌县| 富川| 鸡西市| 石林| 聂荣县| 台江县| 突泉县| 大港区| 商丘市| 云林县| 集贤县| 清镇市| 古蔺县| 灵川县| 定日县| 湟源县| 杨浦区| 涿鹿县| 江门市| 镇沅| 建湖县| 广南县| 嘉义市| 社会| 万全县| 怀柔区| 景宁| 浦北县|