1

假设,一个应用程序有一个内部view controller过多的views框架,其框架相对于view controller的框架。self.view.frame.size.height/width使用, 将它们的值存储在变量中并改为使用它们有什么优点/缺点吗?在内存使用、CPU 使用、时间延迟等方面的优势/劣势。并且,在其核心中,这些 、 或相关参数的值是否height存储width在内存中的某个地方,或者每次代码请求它们时都会获取/计算它们?

4

3 回答 3

1

我建议将值存储在变量中并使用它会更好。

如果您调用self.view.frame.size.height它将每次计算。它们会影响性能。

正在做:

int counter = self.view.frame.size.width;
for(int loop=0;loop<counter;loop++)
{
}

优于:

for(int loop=0;loop<self.view.frame.size.width;loop++)
{
}

在某些情况下,如果宽度和高度是动态变化的(动画逻辑),并且您需要根据值做一些事情,那么使用self.view.frame.size.width将是一件好事。

于 2013-08-07T06:00:07.367 回答
0

优点:

  1. 当视图调整大小时,宽度和高度变量会自动更新为调整大小的值。存储宽度和高度的局部变量将使您编写不必要的代码来管理导致视图调整大小的每个可能事件的更新。

  2. 使用您的局部变量,重复项将增加内存。尽管内存浪费的量级可以忽略不计,但有一些额外的内存用于保存重复变量始终是事实。

缺点:

  1. 如果您从 view.frame.size.height 本身引用宽度和高度,那么您可能会丢失初始值。
于 2013-08-07T06:07:53.917 回答
0

我只想指出,这self.view.frame.size.height = 1不会像许多人预期的那样奏效。它与CGRect temp = self.view.frame; temp.size.height = 1;

所以总是在不同的行中分离 setter/getter 调用和结构访问器。IE

CGRect frame = self.view.frame; // use objc dot syntax to get frame
frame.size.height = 100;   // use C struct accessors 
self.view.frame = frame;  // use dot syntax to set frame
于 2013-08-07T06:08:01.883 回答