Iphone 使用XIB和以编程方式处理视图的利弊

Iphone 使用XIB和以编程方式处理视图的利弊,iphone,ios,ipad,xib,nib,Iphone,Ios,Ipad,Xib,Nib,我想决定是使用XIB更好,还是完全使用代码设计视图更好 到目前为止,我已经了解到,当您在interface builder上设计视图时,它们是预先构建的,因此即使它们使用更多内存,用户也会觉得一切都更快 人们说使用代码做任何事情都很难,但我发现它同样容易,所以我想知道是否有人在使用NIB时体验到了一些真正的速度提升 你有什么经验、建议等 谢谢 您应该能够同时做到这两个方面——有时以编程方式构建视图更好/更容易,有时使用.xib更好/更容易。即使你只以一种方式做事,你也会遇到以另一种方式做事的代码

我想决定是使用XIB更好,还是完全使用代码设计视图更好

到目前为止,我已经了解到,当您在interface builder上设计视图时,它们是预先构建的,因此即使它们使用更多内存,用户也会觉得一切都更快

人们说使用代码做任何事情都很难,但我发现它同样容易,所以我想知道是否有人在使用NIB时体验到了一些真正的速度提升

你有什么经验、建议等


谢谢

您应该能够同时做到这两个方面——有时以编程方式构建视图更好/更容易,有时使用.xib更好/更容易。即使你只以一种方式做事,你也会遇到以另一种方式做事的代码,你需要能够处理这一点


如果您不知道如何使用IB,那么在代码中构建视图肯定更容易。这就是为什么你应该学习使用IB。一旦你了解了IB,你就可以更快地整合你的应用程序可能需要的大部分基于视图的UI。IB帮助您排列东西、居中对象、对齐基线、将控件连接到它们的目标和操作等。我认为可以肯定地说,每个使用IB的人都能有效地体验到“使用NIB时真正的速度提高。”

除非有理由不使用,否则我将始终使用XIB文件。这使您的视图在将来可以轻松维护

以编程方式创建视图的一些原因可能是:

  • 控件需要调整大小, 重新定位或以其他方式改变 依靠别的东西
  • 控制 需要添加或删除 动态地
原因可能更多,但并不太多


如果在不需要的情况下以编程方式创建视图,则会使其他开发人员更难尝试了解视图的外观并对其进行更改。

如果以编程方式构建视图,则可以控制元素的加载。e、 g.您可以使用延迟加载,并在更重要的元素之后的几秒钟内加载辅助按钮、子视图等,从而加快UI的关键部分。您甚至可以将某些元素设置为动画

如果您使用IB,您将获得关于正确元素间距和定位的指南,但是如果您不经常更改设计,您可以将坐标从IB复制到代码中


对于简单的UI元素,如果以编程方式创建它们,最终将需要维护更多的代码行。

IB和NIB在优化视图的加载/卸载方面做了很多工作,但它主要是为了最大限度地减少内存使用,而不是用户的感知速度。例如,延迟加载if可能会使应用程序UI稍微慢一点,但会降低内存使用率。这反过来可以使大型应用程序的整体应用程序性能更好,这是非常值得鼓励的,但很难用狭义的方式定义“性能”。也很难说什么时候应该使用IB,什么时候不应该使用IB——有时候用代码来做会更好

IB与否争论中一个经常被忽视的因素是开发速度,特别是当您有多个开发人员时。在一个更大的团队/项目中,您可能会有一些开发人员更专注于应用程序的基础设施、业务逻辑等,而一些开发人员更专注于UI。在这种情况下,使用IB将使他们更容易独立工作,这将使总体开发更高效


我认为IB是iOS开发平台的核心部分。这不是所有情况下的正确解决方案,但不知道如何使用IB将是一个真正的限制因素。

您应该知道如何同时使用这两种方法。两者之间的性能差异可以忽略不计,不应成为您选择其中之一的原因

许多刚接触iOS开发的人都有这样的误解:NIB(.xib文件)不如通过编程方式创建UI,如果使用IB,就不是一个好的iOS开发人员。这种观点是完全错误的。IB由苹果公司创建,苹果公司的开发人员正在使用它来创建自己的MacOSX和iOS应用程序。如果IB(作为一种工具)足够好,可以被世界上最好的开发人员使用,那么对我们大多数人来说可能已经足够好了

在实践中,我发现两者的结合通常是合适的

在我自己的应用程序中,我发现.xib非常适合快速展示视图的基本内容,它们允许您快速迭代,同时预览视图的外观。在.xib文件中使用自动布局也容易得多

然后,当您需要做更高级的事情时,例如添加精美的动画或移动视图,这就是IBOutlets的用途。您放入nib中的任何内容都可以通过IBOutlet引用。这样,您就可以通过编程实现视图的真实性

最后,您应该完全了解nib(.xib)在自动为您做什么。您应该了解.xib对象解冻时会发生什么。互联网上有很多资源可以更好地理解.xib文件

另外,学习如何以封装的方式使用.xibs。例如,.xib对于原型单元之类的东西非常有用,它们允许您保持代码基础模块化(比故事板更重要)。此外,在视图控制器中需要更少的UI代码

最后,我总是说人们应该像jQuery一样考虑IB/.xib。这将为您节省大量时间,但最好的开发人员仍然知道如何在必要时使用javascript完成所有工作

祝你好运,玩得开心

TL;DR版本