亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
金山区| 苍山县| 商南县| 和龙市| 衡阳县| 黄骅市| 蓬安县| 凤城市| 成都市| 安图县| 剑川县| 东辽县| 鹤峰县| 绥阳县| 宁晋县| 阜南县| 邓州市| 新安县| 郸城县| 都匀市| 东乡族自治县| 安福县| 阿瓦提县| 长阳| 开江县| 灵山县| 七台河市| 土默特左旗| 南溪县| 高唐县| 扬州市| 佛坪县| 保康县| 新绛县| 喜德县| 云安县| 平湖市| 龙里县| 南和县| 肥城市| 自治县|