使用'self.view.frame.size.height'的优势,而不是将其存储在变量中?

时间:2013-08-07 05:51:25

标签: ios objective-c

假设某个应用内部有一个view controller,内容过多views,其帧相对于view controller的帧。 使用self.view.frame.size.height/width是否有任何优点/缺点,而不是将它们的值存储在变量中,而是使用它们?内存使用,CPU使用,延时等方面的优点/缺点。 并且,在它的核心,是heightwidth或相关参数的值存储在某个地方的内存中,还是每次代码请求它们时都会获取/计算它们?

3 个答案:

答案 0 :(得分: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将是一件好事。

答案 1 :(得分:0)

优点:

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

  2. 使用本地变量,重复内存会增加。虽然内存浪费的大小可以忽略不计,但是用一些额外的内存来保存你的重复变量总是一个事实。

  3. 缺点:

    1. 如果从view.frame.size.height本身引用宽度和高度,则可能会丢失初始值。

答案 2 :(得分:0)

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

相同

所以总是在不同的行中单独设置setter / getter调用和结构访问器。即

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