2009-07-10 66 views
4

我很想知道是否有人比较iPhone应用程序的加载时间性能与NIBs中布置的视图与完全以编程方式布置的视图(例如实例化UITextView,将其添加到视图,实例化UIButton,将其添加到风景…)。使用NIB文件的性能损失?

如果我想要一个简单的应用程序快速加载闪电,最好是放弃使用NIB(以及技术上的XIB),而是以编程方式创建视图元素?加载和解析NIB所花费的时间是否足以产生显着差异?

+3

完全nit选择,但XIBs在编译过程中编译到NIBs,所以你在技术上总是在运行时加载NIB。 – 2009-07-10 22:55:44

回答

5

我注意到用NIB加载iPhone上的复杂接口是稍微有些慢些。它只有几分之一秒的时间,但是如果用户期望看到一个表单或模态视图,那么这是显而易见的。我认为区别在于NIB在iPhone上延迟加载,所以视图实际上是在第一次显示视图时创建的 - 而不是在首次创建控制器和视图层次时。也就是说,它可能只对iPhone很重要:-)

一般来说,我会说NIBs是总是值得任何可能存在的性能劣势。当SDK首次推出并且Interface Builder没有经过良好测试时,我写了iPhone应用程序。编写代码来创建视图层次结构是一个可怕的混乱...

4

根据我的经验,它没有任何明显的区别。

如果您考虑NIB系统正在发生的事情,它是用户界面对象状态的紧凑二进制表示形式。通过以编程方式创建对象,您只需保存加载该文件所需的时间并进行一些非常基本的解析。将其与初始化并对这些对象进行第一次绘制所花费的时间(为基础CALayer对象分配内存,使用Quartz2D绘制它们然后将结果合成在一起)进行比较。这段时间要大得多,不管你是否使用NIB都是一样的。如果你加载了一堆PNG文件来绘制你的用户界面,那么这将会使创建控件的时间变得更加渺小。