GCD 定时器 时隔多长时间 执行一次任务

@property (nonatomic, strong) dispatch_source_t Timer;
//  加载完成里面创建
- (void)viewDidLoad {
[super viewDidLoad];
self.title = @"充电中";
//每隔30秒请求一次数据
[self RefreshData];
}
//  销毁定时器
- (void)viewDidDisappear:(BOOL)animated{

[super viewDidDisappear:animated];

// 取消定时器

if (self.Timer) {

dispatch_cancel(self.Timer);

self.Timer = nil;

}

}

- (void)RefreshData

{

// 获得队列

dispatch_queue_t queue = dispatch_get_main_queue();

// 创建一个定时器(dispatch_source_t本质还是个OC对象)

self.Timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);

// 设置定时器的各种属性(几时开始任务,每隔多长时间执行一次)

// GCD的时间参数,一般是纳秒(1秒 == 10的9次方纳秒)

// 何时开始执行第一个任务

// dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC) 比当前时间晚1秒

dispatch_time_t start = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(30.0 * NSEC_PER_SEC));

uint64_t interval = (uint64_t)(30.0 * NSEC_PER_SEC);// 间嗝30秒

dispatch_source_set_timer(self.Timer, start, interval, 0);

// 设置回调

dispatch_source_set_event_handler(self.Timer, ^{

[self queryListOfChargingInformationChargeSeq:self.chargeSeq];

});

// 启动定时器

dispatch_resume(self.Timer);

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容