美文网首页
7-3 NSTimer 与RunLoop

7-3 NSTimer 与RunLoop

作者: Rumbles | 来源:发表于2019-04-13 21:32 被阅读0次

    NSTimer需要添加进Runloop中才可以执行 同样的

        self.timer = [NSTimer timerWithTimeInterval:1 repeats:YES block:^(NSTimer * _Nonnull timer) {
            NSLog(@"----- ----- ");
        }];
    ////> 不添加只执行一次。因为 timer需要添加到 RunLoop 中才可以执行 下面的创建方式会默认添加到 :NSDefaultRunLoopMode中  所以下面的创建方式会执行多次 这种方式只执行一次
        [[NSRunLoop currentRunLoop] addTimer:self.timer forMode:NSRunLoopCommonModes];
        [self.timer fire];
        
        NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(update) userInfo:nil repeats:YES];
        [timer fire];
    
    累计添加结果
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
    [[NSRunLoop currentRunLoop] addTimer:timer forMode:UITrackingRunLoopMode];
    ===
     [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
    

    [self performSelector: withObject: afterDelay:0];

        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            // 当前在子线程中,有afterDelay参数的方法不会被执行
            [self performSelector:@selector(delay) withObject:nil afterDelay:0.3];
            // 此方法会被执行
            [self performSelector:@selector(noDelay) withObject:nil];
        });
    
    afterDelay:0.3 会开启一个NSTimer 如果不在NSRunLoop 里面那么是不会运行的
    

    相关文章

      网友评论

          本文标题:7-3 NSTimer 与RunLoop

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