我很想知道是否有人有任何经验将iPhone应用程序的加载时间性能与NIB中显示的视图与完全以编程方式布局的视图进行比较(即实例化UITextView,将其添加到视图中,实例化UIButton,添加它视图......)。
如果我想要一个简单的应用程序快速加载闪电,最好放弃使用NIB(技术上是XIB),而是以编程方式创建视图元素?加载和解析NIB所花费的时间是否足以产生明显的差异?
答案 0 :(得分:5)
我注意到在iPhone上加载带有NIB的复杂接口略微更慢。它只有一秒钟,但如果用户希望看到工作表或模态视图,则会很明显。我认为区别在于NIB在iPhone上延迟加载,因此视图实际上是在第一次显示视图时创建的 - 而不是在首次创建控制器和视图层次结构时。也就是说,它可能只对iPhone有用: - )
一般来说,我认为NIB 始终值得任何可能存在的性能劣势。当SDK第一次出现并且Interface Builder没有经过良好测试时,我写回了iPhone应用程序。编写代码来创建视图层次结构是一个糟糕的混乱......
答案 1 :(得分:4)
根据我的经验,它没有任何明显的区别。
如果你想一想NIB系统正在发生什么,它就是用户界面对象状态的紧凑二进制表示。通过以编程方式创建对象,您只需节省加载该文件所需的时间并进行一些非常基本的解析。将其与初始化和第一次绘制这些对象所花费的时间进行比较(为底层CALayer对象分配内存,使用Quartz2D绘制它们,然后将结果合成在一起)。那个时间要大得多,无论你是否使用NIB,它都完全相同。如果您加载一堆PNG文件来绘制UI,那么这将使创建控件所花费的时间相形见绌。