91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

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
古丈县| 自治县| 本溪市| 新巴尔虎左旗| 哈巴河县| 宣威市| 苏尼特左旗| 南川市| 旬邑县| 徐州市| 玉山县| 湖口县| 杭锦后旗| 大冶市| 宝山区| 甘孜县| 云浮市| 沁阳市| 北安市| 德昌县| 岱山县| 社会| 绵竹市| 景宁| 苍南县| 万源市| 嘉定区| 沅陵县| 黑龙江省| 启东市| 灵宝市| 临夏县| 卓资县| 禹州市| 永安市| 新干县| 松滋市| 津市市| 威海市| 上犹县| 郎溪县|