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