您好,欢迎来到凌优教育。
搜索
您的当前位置:首页iOS 查看屏幕FPS

iOS 查看屏幕FPS

来源:凌优教育
  • CADisplayLink
  • NSProxy
  • forwardingTargetForSelector:

一.CADisplayLink

(1) 为什么使用CADisplayLink而不是NSTimer?

CADisplayLink时,它的定时器方法就是屏幕每次刷新的时候就会调用

(2) 如何计算当前的FPS?

弄懂这个问题首先要知道什么是FPS,

即:一秒刷新多少次
那么记录一下刷新次数,然后除以时间就可以了
这里主要是利用了CADisplayLink的时间戳属性timestamp
在CADisplayLink调用的方法里有以下代码:

_count++;  // 记录刷新次数
NSTimeInterval delta = link.timestamp - _lastTime;
if (delta < 1) return;
_lastTime = link.timestamp;
float fps = _count / delta;
 _count = 0;

这样就得到FPS了

(3) 如何解决循环引用问题?

CADisplayLink 对象 _line 被控制器持有,_line又持有控制器作为Target,这样如果在控制器的dealloc[_link invalidate];是没用的,因为根本不会去到dealloc里;
有个比较不好的解决方式是,在viewWillDisappear[_link invalidate];,但是这并不是一个好的解决办法,因为如果push到其他页面,是不需要停止定时器的;

这就引出了NSProxy,这是我接触的第一个非NSObject的子类;
遵守<NSObject>协议

@interface NSProxy <NSObject> {
    Class   isa;
}

可以用NSProxy作为中间人,弱引用控制器,
target如何调用控制器实现的方法呢?
消息转发!

消息转发.png

NSProxy的声明文件里

被注释了.jpg
被注释了,但是重写该方法,还是能够起作用,(或者是其他我不知道的原因)

以上,就可以在退出当前控制器正确释放 timer 了


被释放.jpeg

凌优教育还为您提供以下相关内容希望对您有帮助:

iOS有没有监控fps的APP?

看有没有越狱,iPhone实时监控fps必须要有悬浮桌面,而没有越狱的苹果是做不到的。而且看你是用来做什么的,如果只是为了知道自己手机的fps刷新率,这个倒是很简单

iOS 13.2 新增细节:支持iPhone 11 直接更改视频分辨率和帧率_百度...

分辨率选择:用户可以在相机界面的右侧找到分辨率选择选项,可以在4K和HD之间进行切换。帧率切换:除了分辨率选择外,用户还可以选择不同的帧率。对于HD视频,可以选择30或60 fps;对于4K视频,则可以选择30、60和24 fps。操作便捷性:相比iOS 13.2之前的版本,用户无需离开相机应用,再进入“设置”“相机...

iOS:分享一些模拟器使用技巧

在 Xcode 中启用 Debug View 的 Show View Frame 选项,可以实时查看 UI 元素的边界框,提高 UI 设计的精准度。离屏渲染优化 FPS:在 Debug 菜单中勾选 Color Offscreen Rendered,模拟器将展示优化后的视图,帮助识别和解决离屏渲染问题,提高 FPS。窗口大小调整:通过 Command + 1/2/3/4 快捷键...

iOS 13.2 新增细节:支持 iPhone 11 直接更改视频分辨率和帧率_百度...

在相机界面的右侧,用户可以看到两个新选项:分辨率选择(4K和HD(1080p)之间),以及帧率切换(HD视频为30或60fps,4K视频为30、60和24fps)。在iOS 13.2之前,如果用户想要对视频录制的帧率和分辨率进行调整,则需经过以下流程:离开相机应用,依次打开iPhone“设置”-“相机”-“视频录制”,选择视...

iOS 14:在“相机”应用中即可更改视频质量

在相机应用的右上方,您可以找到显示当前视频分辨率和帧速率的位置。分辨率更改:轻点该区域即可切换分辨率。如果您在“设置”“相机”中将视频质量预设为1080p,则可以在HD和4K之间切换;如果预设为720p,则可以在720p和4K之间切换。帧速率更改:当以4K拍摄时,您可以点击帧频选项在24、30和60 fps之间...

如何在ios11中设置视频录制的分辨率?

打开设置:首先,在你的iOS设备上找到并打开“设置”应用。进入相机设置:在“设置”中,向下滚动找到并点击“相机”选项。调整视频录制分辨率:在“相机”设置中,找到并点击“录制视频”选项。这里,你可以看到不同的分辨率设置,如720p HD 30 fps、1080p HD 30 fps或60 fps。选择分辨率:根据你的...

14pm怎么调帧率ios14帧数

通常情况下,帧率以每秒帧数(FPS)的形式表示。如果你想调整某个视频或动画的帧率,你可以使用专业的视频编辑软件,如Adobe Premiere Pro或Final Cut Pro等。在这些软件中,你可以导入你要编辑的视频或动画,然后在时间轴上调整帧率。具体的操作步骤可能因软件而异,但通常可以通过在编辑面板上设置帧速率...

ios怎么看游戏帧数

Core Animation工具用来监测Core Animation性能。它给我们提供了周期性的FPS,并且考虑到了发生在程序之外的动画。

为什么ios玩王者荣耀fps只有30?怎么解决?

降低下画质! 右上方信号格旁边有个齿轮,打开后会有画面质量,粒子质量,自己调节高低

iOS 15.1 新功能汇总:支持 ProRes 格式、新增微距模式开关

iOS 15.1 新功能主要包括以下几点:支持 ProRes 视频格式:在 iOS 15.1 中,iPhone 13 Pro 和 13 Pro Max 增加了对 ProRes 视频格式的支持。用户可以在“设置”“相机”“格式”中开启此功能。128GB 版本的 iPhone 13 Pro 系列仅支持以 30fps 拍摄 1080p ProRes 视频,而更高存储容量的版本...

Copyright © 2019- linuxxuexi.com 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务