使用NIB文件会有性能损失吗?

4

我想知道是否有人有比较过使用NIB(XIB)与完全通过编程布局的iPhone应用程序的加载时间性能经验(即实例化UITextView,将其添加到视图中,实例化UIButton,将其添加到视图中等)。

如果我想让一个简单的应用程序加载速度极快,那么放弃使用NIB,改为通过编程创建视图元素会更好吗?加载和解析NIB所需的时间足以产生明显的差异吗?


3
虽然有点挑剔,但是 XIB 在编译过程中会被转换成 NIB,因此在运行时你实际上总是在加载一个 NIB。 - Barry Wark
2个回答

5
我注意到在iPhone上使用NIB加载复杂的界面会略微慢一些。虽然只有几分之一秒的差距,但如果用户期望看到一个表或模态视图,则会注意到。我认为差异在于iPhone上惰性地加载NIB,因此视图实际上是在第一次显示视图时创建的,而不是在控制器和视图层次结构首次创建时创建。话虽如此,在iPhone上可能只有这个问题 :-)
总的来说,我认为NIB始终值得任何可能存在的性能劣势。当SDK首次推出并且Interface Builder没有经过充分测试时,我编写了iPhone应用程序。编写代码创建视图层次结构是一团糟...

4

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

如果你考虑一下 NIB 系统正在进行的操作,它是用户界面对象状态的紧凑二进制表示。通过编程方式创建对象,你只是节省了加载文件和进行一些非常基本的解析所需的时间。与初始化并绘制这些对象(为底层 CALayer 对象分配内存,使用 Quartz2D 绘制它们,然后将结果合成在一起)需要的时间相比,这个时间更长,而且无论是否使用 NIB,它都是完全相同的。如果你加载一堆 PNG 文件来绘制你的 UI,那么这将使创建控件所花费的时间相形见绌。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接