NSTimer not firing

前端 未结 3 1287
野趣味
野趣味 2020-12-11 03:13

I have an NSTimer that I init with this code:

testTimer = [[NSTimer alloc] initWithFireDate:[new objectAtIndex:0] interval:0.0 target:self selector:@selector         


        
3条回答
  •  佛祖请我去吃肉
    2020-12-11 03:36

    I think I had the same problem as Dobler, but my solution was different.

    The problem was that the timer was being created and scheduled in a GCD thread in a block within a

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{})
    

    call (actually nested deep, so it wasn't obvious that this was the case).

    Using NSTimer's scheduledTimerWithTimeInterval:... placed the timer into an invalid run loop.

    The fix was to change to

    timer = [NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(...) userInfo:nil repeats:YES];
    [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
    

提交回复
热议问题