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));

          }

}


```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容