美文网首页
创建定时器

创建定时器

作者: Jean_Lina | 来源:发表于2020-08-29 18:27 被阅读0次
 (1) NSTimer创建定时器:
@property (nonatomic, strong) NSTimer *timer;

- (instancetype)init
{
    self = [super init];
    if (self) {
        self.timer = [NSTimer timerWithTimeInterval:0.5 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];
        [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
        [self.timer fire];
    }
    return self;
}
- (void)updateTimer {
    NSLog(@"定时器计时开始");
}
- (void)cleanTimer {
    [self.timer invalidate];
    //self.timer = nil;
}

 (2)CADisplayLink创建定时器:
@property (nonatomic, strong)CADisplayLink *displayLink;

- (instancetype)init
{
    self = [super init];
    if (self) {
        self.displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(updateTime)];
        self.displayLink.frameInterval = 0.5;
        [self.displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];
    }
    return self;
}
- (void)updateTime {
    NSLog(@"定时器计时开始");
}
- (void)cleanTimer {
    [self.displayLink invalidate];
}

(3) dispatch_source_t创建定时器:
@property (nonatomic, strong) dispatch_source_t timer;

- (instancetype)init
{
    self = [super init];
    if (self) {
        count = 0;
        self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());
        dispatch_time_t start = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC));
        uint64_t interval = (uint64_t)(1.0 * NSEC_PER_SEC);
        dispatch_source_set_timer(self.timer, start, interval, 0);
        //设置事件处理回调
        dispatch_source_set_event_handler(self.timer, ^{
            NSLog(@"定时器计时开始");
        });
        //启动定时器
        dispatch_resume(self.timer);
    }
    return self;
}
- (void)cleanTimer {
    if (self.timer) {
        dispatch_source_cancel(self.timer);
        //self.timer = nil;
    }
}

相关文章

  • Qnx定时器的使用

    1.创建定时器 QNX定时器首先需要创建一个定时器对象,设置通知类型,一般包括信号、脉冲或线程创建,并创建通知结构...

  • 创建一个只在滑动模式下计时的定时器

    创建定时器 在NSTimer类中有几种创建定时器的方法: 要想让定时器真正的工作,需要把定时器加入到RunLoop...

  • mysql定时器,创建定时任务

    查看定时器功能开启状态 查看指定定时器状态 创建测试表 定时器创建(定时器可以直接执行语句也可以执行存储过程的调用)

  • tableView或者scrollView滑动时 定时器 不响应

    先写解决办法 1. 2. 使用GCD创建定时器。GCD创建定时器不收Runloop的影响,并且GCD的定时器更精准...

  • RxSwift定时器探索

    定时器创建 RxSwift中定时器的创建有两种方式: 从上可以知道,可以通过timer和interval创建,由源...

  • 0707-NSTime

    NSTime 定时器 创建NSTime

  • GCD定时器

    创建GCD定时器 注意:默认创建的定时器对象需要强引用保住它的命,在任务执行中不被释放 定时器操作函数 dispa...

  • VUE中定时器如何使用?

    定时器的创建和使用 定时器的销毁 定时器 setTimeout()方法 和 setInterval() 使用方法相...

  • iOS定时器

    定时器分为两种 第一种 //利用timer...创建一个定时器,这样创建的定时器必须加到RunLoop里才能正常执...

  • 定时器开启 关闭

    创建一个定时器

网友评论

      本文标题:创建定时器

      本文链接:https://www.haomeiwen.com/subject/bqyjsktx.html