以编程方式创建视图 vs. nib

4

我很想知道有没有人比较过使用NIB布局和完全以编程方式布局的iPhone应用程序的加载时间性能(这里有一个类似的问题)。

完全以编程方式布局的视图是否真的比使用NIB布局的视图有任何优势?


2
除了性能以外,如果你正在团队中工作,并需要通过git合并东西,那么编程创建的视图更易处理。 - Marc
4个回答

6
根据Apple的说法,XIB文件加载时间比在代码中编写用户界面要长。这是在WWDC讲座中提到的。如果性能很重要,建议使用代码构建UI而不是使用IB。

3
最好提供参考链接。 - Raptor
我不记得具体是哪个视频,但我可以去找一下。它肯定来自于上一次的WWDC(2012年)。 - Avi Tsadok

4
使用代码有一些优势:
  1. 更易与多人合作。当提交到存储库时,解决冲突更容易。
  2. 您可以依靠代码中的内容,而不是在nib文件中隐藏的某些麻烦选项(您无法意识到的选项)。你拥有所见即所得。
使用nib:
  1. 我认为它的开发速度更快。
  2. 代码没有每个界面细节的“污染”。
  3. 对于没有太多经验的人来说,这也更容易。
关于性能,您可以实际查看此处

2
当我开始学习iOS编程时,我是在xib文件中构建UI界面。但当我开发了一些项目后,我开始只写代码来实现我的UI。
通过以编程方式构建UI有一些好处:
首先,通过编写代码,您可以清楚地了解视图层次结构,并且视图层次结构对于有效地实现UI非常重要。
其次,如果您的UI很复杂,例如具有某些动画或变换效果,那么编写UI将会带来很多好处。有时甚至可能不使用UIView来构建UI,而是使用CALayer来实现一些无法通过xib文件构建的效果。
此外,当您习惯以编程方式构建UI时,您会喜欢它,因为您只需在.m文件中编写代码,无需担心xib文件。
然而,如果您只是iOS编程的初学者,那么使用xib文件开始也是可以的。
(现在苹果提供StoryBoard,我还没有学习过它,您可以学习一下看是否有什么新东西。)

视图层次结构在界面构建器中也是可见的。虽然您不能完全通过代码完成所有操作,但完全忽略IB并不是正确的方法。为什么要通过代码构建整个视图层次结构,当可以轻松地通过IB完成呢? - Rakesh
实际上,通过编码,我们可以实现使用IB构建的一切。只是关于哪种方式更有效率的问题。当我开始学习iOS编程时,我喜欢IB,因为它真的很容易学习和使用,但是当我开发更复杂的UI时,我认为代码可以更有效率。@Rakesh - Phineas Lue
当然,在代码中可以实现IB中的所有内容,但是需要更多的工作量(无论你打字速度有多快 :))。我的意思是最有效的方法不会是仅使用IB或仅使用代码的方法,而是两者的结合。我已经试图将我的想法表达在答案中。@Phineas - Rakesh

2

我认为折衷使用两种方法是正确的选择。使用接口构建器定义基本布局(即一个不会随时间变化太多的xib)和视图的默认选项,其余部分可以通过编程方式完成(特定调整和效果)。这应该在一定程度上解决源代码控制和性能问题。

虽然一旦我们开始以编程方式创建视图,我们会继续进行每次操作,而没有意识到同样的事情可以用更少的精力在接口构建器中完成。毕竟,如果我们正在构建GUI,最好有一个视觉参考。


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