ios - 测量在 Xcode 中渲染 UIView 的 CPU 使用率
问题描述
我对 Interface Builder 中的 nib 有一个看法。它在笔尖中有几个UIStackViews
,我使用它是因为它很容易对齐 UI 元素。一位同事建议我不要使用UIStackViews
,因为从计算的角度来看它们“昂贵”。另一种方法是手动为单个元素设置约束。
我可以使用什么 Xcode 工具来验证我同事的断言,我将如何使用它?我发现的最好的东西是this,但我希望得到更细化的东西。有问题的笔尖是UITableViewCell
.
解决方案
从计算的角度来看,它们是“昂贵的”
好的,我现在将尝试证明这完全是假的。
堆栈视图并不神奇。堆栈视图不执行任何特殊的运行时调整。堆栈视图只是一个约束制造者,不多也不少。你也是。堆栈视图所做的一切,您都可以做到。堆栈视图的结果约束与您自己创建的约束完全相同(假设您甚至知道如何创建)。因此,约束本身并不会因为堆栈视图制造它们而更加昂贵。
那么让我们来谈谈约束的初始生成。好吧,堆栈视图通过死记硬背生成其约束。这只是一种简单的公式化方法,它基于堆栈视图的设置和(在某些情况下)排列的子视图的固有内容大小等已经给出的参数。因此,堆栈视图实际上不需要任何时间来吐出它生成的约束,并且只需执行一次。
因此,如果约束的生成并不昂贵,并且如果约束本身也不昂贵,那么费用在哪里?它无处可去。
有人可能会争辩说,对于特定期望的结果,使用堆栈视图是不必要的复杂或懒惰,因此自己制定约束会“更好”;但在我看来,“昂贵”似乎并不是可以针对堆栈视图提出的真正指控。
推荐阅读
- angular - Nativescript queryParamsMap 在返回时不起作用
- visual-studio-2019 - 如何在 Visual Studio 2019 中启用 Microsoft 文档弹出窗口,如 NetBeans 中的 java 文档
- typescript - 来自另一个 ts 文件的打字稿导入功能 - 文件不是模块错误
- html - 边框半径和表格边框 - 边框突出在右侧
- python - 在 Google Colab 中打开 JPG 文件
- java - 任何人都可以解释如何从一个Maven项目Java应用程序在opendaylight中安装一个netconf设备
- c# - 调用 Azure SQL 数据库 REST API 报错:不支持 Basic 的身份验证方案
- amazon-dynamodb - 对 DynamoDB 表中不存在的项目应用条件比较 (lt, eq, gt) 表达式
- arrays - 如何交换数组中的两个特定元素
- r - 棒棒糖图的分面包装