Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 通过分割.xib文件减少内存使用?_Iphone_Ios_Class_Memory_Ram - Fatal编程技术网

Iphone 通过分割.xib文件减少内存使用?

Iphone 通过分割.xib文件减少内存使用?,iphone,ios,class,memory,ram,Iphone,Ios,Class,Memory,Ram,我正在回顾我的一个旧应用程序(实际上是我的第一个),并试图减少内存使用量,以防止它在旧设备上崩溃(我在旧设备上运行过它,并用仪器进行了分析,而导致它崩溃的肯定是内存问题)。不幸的是,当我制作这个应用程序时,我对iOS开发的常规做法不是很熟悉,而且结构非常糟糕:一个视图控制器和一个xib文件,根据需要隐藏和显示界面元素 现在,我想知道是否值得对多个类和视图控制器进行一次彻底检修并重新开始,以及这是否会减少加载应用程序所需的高内存量(70+MB) 此外,如果我只是清空.xib文件并以编程方式加载所有

我正在回顾我的一个旧应用程序(实际上是我的第一个),并试图减少内存使用量,以防止它在旧设备上崩溃(我在旧设备上运行过它,并用仪器进行了分析,而导致它崩溃的肯定是内存问题)。不幸的是,当我制作这个应用程序时,我对iOS开发的常规做法不是很熟悉,而且结构非常糟糕:一个视图控制器和一个xib文件,根据需要隐藏和显示界面元素

现在,我想知道是否值得对多个类和视图控制器进行一次彻底检修并重新开始,以及这是否会减少加载应用程序所需的高内存量(70+MB)


此外,如果我只是清空.xib文件并以编程方式加载所有接口元素(并继续使用一个.xib文件),它会起作用吗?

如果不知道你的应用程序中到底发生了什么,很难知道它会有多大帮助。以下是一些帮助您解决问题的一般提示:

  • 拆分视图控制器,以便每个视图有一个视图控制器。在某些情况下,视图控制器实际上应该控制多个视图(无论是内存效率、性能等),但将此作为起点
  • 不要将所有对象放在一个XIB中。将其拆分为每个视图控制器一个XIB,并在需要时让iOS加载XIB元素

  • 以编程方式创建接口元素对内存使用没有帮助
  • 注意缓存的内容,只有在有明显性能优势的情况下才将内容保留在内存中

如果您决定重写应用程序,请确保经常使用工具对其进行评测,以衡量您的进度。

“以编程方式创建接口元素对内存使用没有帮助”,但是,在加载期间它对内存有帮助吗?以编程方式创建接口元素(可能是)将使用与XIB中相同的内存量。这里的目标是控制元素的实例化时间。如果以编程方式进行,则可以更好地控制何时创建它,也许可以将其延迟到以后。但是,我建议您拆分XIB,以便它们只在您实际需要时加载,因为这将实现相同的效果(并且更易于构建);整体