后台定时器定时执行任务问题

参照网上的,但是并没有什么作用,求代码,求解决

// 1.创建一个定时器
// 获取一个全局并发队列
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
// 第四个参数:传递一个队列,该队列对应了将来的回调方法在哪个线程中执行
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);

// 2.指定定时器开始的时间和间隔的时间, 以及精准度
// 开始时间
dispatch_time_t startTime = dispatch_time(DISPATCH_TIME_NOW, 3.0 * NSEC_PER_SEC);

// 间隔时间
uint64_t interval = 1.0 * NSEC_PER_SEC;
// 设置定时器
/*
 第1个参数: 需要给哪个定时器设置
 第2个参数: 定时器开始的时间/DISPATCH_TIME_NOW立即执行
 第3个参数: 定时器开始之后的间隔时间
 第4个参数: 定时器间隔执行的精准度, 传入0代表最精准(尽量的让定时器精准), 传入一个大于0的值, 代表多少秒的范围是可以接受的
 第四个参数存在的意义: 主要是为了提高程序的性能
 注意点: Dispatch的定时器接收的时间是纳秒
 */
dispatch_source_set_timer(timer, startTime, interval, 0 * NSEC_PER_SEC);

// 3.指定定时器的回调方法
/*
 第1个参数: 需要给哪个定时器设置
 第2个参数: 需要回调的block
 */
dispatch_source_set_event_handler(timer, ^{
    NSLog(@"++++++++++++++ %@", [NSThread currentThread]);

});

// 4.开启定时器
dispatch_resume(timer);

  dispatch_queue_t queue = dispatch_get_main_queue();

放到主线程试试

  • iOS 请教一个崩溃的问题 困扰我很久了
  • IBOutlet UILabel 重叠
  • 如何彻底react-native项目(未上架)中iOS修改bundleID?
  • 如何设置UITabBarItem 选中时的背景色
  • iOS 图片处理问题
  • iOS绘制椭圆轨迹的一部分
  • 自己 app 如何把 坐标 地址 传给 高德导航并 打开 高德导航app
  • oc 如何才能改变cell的宽度,达到微信公众号里的消息cell的效果?
  • 我从服务器得到数据之后怎么去刷新CVCalendar
  • 高德定位关闭后在打开获取不到定位
  • iOS 获取系统所有的语言列表