Ios 使用'的任何优势;self.view.frame.size.height';,而是将其过度存储在变量中?

Ios 使用'的任何优势;self.view.frame.size.height';,而是将其过度存储在变量中?,ios,objective-c,Ios,Objective C,假设一个应用程序有一个视图控制器,内部有过多的视图,其帧与视图控制器的帧相对。 使用self.view.frame.size.height/width比将其值存储在变量中并使用它们有什么优点/缺点吗??内存使用、CPU使用、延时等方面的优点/缺点。 而且,在它的核心,这些值是高度、宽度或相关参数存储在内存中的某个地方,还是每次代码请求时都会获取/计算它们???我建议将这些值存储在变量中,使用它会更好 如果您调用self.view.frame.size.height,则每次都会计算它。它们会影响性

假设一个应用程序有一个
视图控制器
,内部有过多的
视图
,其帧与
视图控制器的帧相对。
使用
self.view.frame.size.height/width
比将其值存储在变量中并使用它们有什么优点/缺点吗??内存使用、CPU使用、延时等方面的优点/缺点。
而且,在它的核心,这些值是高度、宽度或相关参数存储在内存中的某个地方,还是每次代码请求时都会获取/计算它们???

我建议将这些值存储在变量中,使用它会更好

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

做:

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

对于(int loop=0;loop,我建议将值存储在变量中,使用它会更好

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

做:

int counter = self.view.frame.size.width;
for(int loop=0;loop<counter;loop++)
{
}
int counter=self.view.frame.size.width;
对于(int-loop=0;loop优点:

  • 调整视图大小时,宽度和高度变量将自动使用调整大小的值进行更新。存储宽度和高度的局部变量将使您编写不必要的代码,以便在每个可能导致视图调整大小的事件上管理这两个变量的更新

  • 局部变量的重复会增加内存。虽然内存浪费的大小可以忽略不计,但有一些额外的内存用于保存重复变量始终是事实

  • 缺点:

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

  • 调整视图大小时,宽度和高度变量将自动使用调整大小的值进行更新。存储宽度和高度的局部变量将使您编写不必要的代码,以便在每个可能导致视图调整大小的事件上管理这两个变量的更新

  • 局部变量的重复会增加内存。虽然内存浪费的大小可以忽略不计,但有一些额外的内存用于保存重复变量始终是事实

  • 缺点:

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

  • 我只想指出,
    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
    

    我只想指出,
    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