JPFPSStatus是一个检测查看屏幕帧数的轮子,通过CADisplayLink 加入RunLoop模式.
可以用来绘制ui动画效果,也可以用来获取网络状态.
其核心代码:
displayLink = [CADisplayLinkdisplayLinkWithTarget:selfselector:@selector(displayLinkTick:)];[displayLink setPaused:YES]; [displayLink addToRunLoop:[NSRunLoopcurrentRunLoop] forMode:NSRunLoopCommonModes];
显示
- (void)displayLinkTick:(CADisplayLink*)link {
if(lastTime ==0) {
lastTime = link.timestamp;return;
}
count++;
NSTimeIntervalinterval = link.timestamp - lastTime;
if(interval <1)return;
lastTime = link.timestamp;
floatfps = count / interval;
count =0;
NSString*text = [NSStringstringWithFormat:@"%d FPS",(int)round(fps)];
[fpsLabel setText: text];
}
移除
- (void)dealloc {
[displayLink setPaused:YES];
[displayLink removeFromRunLoop:[NSRunLoopcurrentRunLoop] forMode:NSRunLoopCommonModes];
}
PS: iOS设备的屏幕刷新频率是固定的,JPFPSStatus在正常情况下会在每次刷新结束都被调用,因为它本身就是跟屏幕刷新同步的。