可可约束导致高CPU使用

可可约束导致高CPU使用,第1张

概述我最近在我的应用程序中切换到NSLayoutConstraint,我突然注意到,在某些意见中,我的应用程序不断使用大约20%或更多的CPU.正如我所说,只有当一些视图在屏幕上,只有在我切换到约束之后才会发生. 通过运行时间分析器,我注意到,即使没有发生任何事情,也没有任何用户交互,[NSView displayIfNeeded]在这些视图中不断被调用.此外,如果我调整窗口大小,我可以找到一些配置, 我最近在我的应用程序中切换到NSLayoutConstraint,我突然注意到,在某些意见中,我的应用程序不断使用大约20%或更多的cpu.正如我所说,只有当一些视图在屏幕上,只有在我切换到约束之后才会发生.

通过运行时间分析器,我注意到,即使没有发生任何事情,也没有任何用户交互,[NSVIEw displayIfNeeded]在这些视图中不断被调用.此外,如果我调整窗口大小,我可以找到一些配置,其中cpu使用率下降到正常值.如果我将窗口缩小到原来的大小,cpu使用率再次增长,并且再次调用[NSVIEw displayIfNeeded].

即使约束没有崩溃(在控制台中没有令人不满意的约束错误的迹象),似乎有一些视图和大小的组合不断刷新.

有没有人经历过这个?或者至少知道如何更好地跟踪问题?

经过一番尝试和错误,我把它缩小到了这个观点

它是tableVIEw中的一个自定义单元格.如果我用正常的单元格替换它,cpu的使用将恢复正常.我也检查过布局是不明确的.

解决方法 这通常是由于约束的四舍五入问题.特别是如果你使用“等宽”约束.

另一个类似问题的原因是使用“容器中心”约束.这常常导致四舍五入的问题.

检查您的约束,如果您使用这些约束之一并降低它们的优先级.这允许忽略这些规则,如果它们不适合.或者甚至更好,创建没有中心和相等宽度/高度限制的布局.

总结

以上是内存溢出为你收集整理的可可约束导致高CPU使用全部内容,希望文章能够帮你解决可可约束导致高CPU使用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1028117.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存