文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

iOS定时器-- NSTimer&GCD定时器

2023-09-21 11:40

关注

在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指定了定时器是否重复执行。
2. 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,需要在主线程中执行更新操作。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯