JPFPSStatus源码分析

1.没有什么含量 就是通过CADisplayLink  加入RunLoop模式

跟定时器一样,要放入CommonMode

displayLink= [CADisplayLink displayLinkWithTarget:self selector:@selector(displayLinkTick:)];

[displayLink  setPaused:YES];

[displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];

CADisplayLink  timestamp 60秒 是固定的。如果执行target  一个周期 delatTimestamp=1的时候  count++没有等于60  所以掉帧了。 CPU忙于执行其他事情,绕过几次回调计算。

```

- (void)displayLinkTick:(CADisplayLink*)link {

     if(lastTime==0) { 

      lastTime= link.timestamp;

        return;

}

          count++;

          NSTimeIntervalinterval = link.timestamp-lastTime;

          if(interval <1)return;

          lastTime= link.timestamp;

          float  fps =count/ interval;

         count=0;

         NSString*text = [NSStringstringWithFormat:@"%d FPS",(int)round(fps)];

         [fpsLabel setText: text];

         if(_fpsHandler) {

                _fpsHandler((int)round(fps));

          }

}


```

你可能感兴趣的:(JPFPSStatus源码分析)