Xcode:避免使用Interface Builder是好还是坏?

时间:2013-07-23 16:19:18

标签: ios interface-builder

我正在慢慢学习如何在Xcode和Objective-C中构建应用程序,我一直在阅读this blog post关于编写Cocoa Touch应用程序而不使用Interface Builder,以及this blog post关于某人如何使用接口生成器,只要他们可以。

我发现自己更倾向于避免使用Interface Builder,因为如果只是简单的代码,我可以更快地发现问题,而且在这一点上我比编写代码更熟悉使用Interface Builder。

所以我正在考虑避免完全使用Interface Builder。但在此之前,我想了解以下内容:

  • 有绝对必须使用Interface Builder的时候吗?没有它,有什么是不可能实现的吗? (我知道情况正好相反。)

  • 我是否有任何实践可以帮助我不要错过Tal Bereznitskey使用Interface Builder概述的优点。我特别想到了他所做的关于维护更容易以及更容易原型化和更改内容的观点。

  • 无论如何,忽略Interface Builder会使我在将来构建应用程序时处于劣势。如果我只是坚持编写代码,那么我希望将来要开发的复杂应用程序是否会更难开发?

  • 我目前正在自己​​构建应用程序,但是当我开始与其他开发人员合作时,我会处于一个显着的劣势,因为我从来没有学过如何使用Interface Builder,或者我只能通过了解才能获得如何编写代码?

3 个答案:

答案 0 :(得分:4)

我的发展经验和IB的利弊:

首先让IB去除复杂性,因为它阻碍了对仅在代码中表达的核心概念的学习。尽管IB隐藏了本来很明显的连接(因此易于学习和调试),但有很多事情要说,但通常它可以很好地删除多余的代码。

尽可能多地了解视图层次结构和UI元素的工作方式,一旦您对Objective-C和Cocoa感觉更舒服,就不需要使用IB。我认为在IB中你不能做任何事情,但是当以编程方式处理时,肯定会有更多灵活和强大的功能。

从那时起,一旦你理解了基础功能,那么你可以回到使用IB,让它节省您的时间和精力,否则你将使用UIKit元素的许多属性。

解决您对错过的担忧。我想说花一些时间来学习Storyboard(规划UI的集体方法)和XIB / NIB文件(其中单个UI文件与单个视图控制器相关联)。故事板是更新的,不太完全被许多人理解,包括我! NIB和XIB更强大/更不明显但仍然非常重要,因为有些东西在Storyboard中不能很好地工作。

在与他人合作方面,IB可以使版本控制变得痛苦,因为IB文件的Plist / Backing并不总是与合并等有关...但是我会说,如果你来自一个首先学习代码然后转向学习IB将更容易然后反过来。在团队中工作的最重要的规则是不要害怕提问。您的代码技能将帮助其他可以帮助您完成IB的人。

希望有所帮助。 Ray Wendlerlich网站上有很棒的教程,google他。

答案 1 :(得分:2)

  

有绝对必须使用Interface Builder的时候吗?没有它,有什么是不可能实现的吗? (我知道情况恰恰相反。)

据我所知,没有。

  

我是否有任何实践可以帮助我不要错过Tal Bereznitskey使用Interface Builder概述的优点。我特别想到了他所做的关于维护更容易以及更容易原型化和更改内容的观点。

Interface Builder有几个优点和缺点。让我列举其中一些:

优势#1:快速提升中等复杂的界面更容易。

优势#2:由于它与开发工具深度集成,您几乎绝对可以确保它在应用程序的UI中保持一致性。例如,我经历过,当我构建一个表视图控制器时,我错过了代码中的一些细节,并且在表视图上方有一些无关的空白空间。使用IB时没有发生此错误。

缺点#1:对于开源库和应用程序,没有IB的开发人员(例如,使用非官方工具链和/或使用例如Theos开发越狱设备的开发人员)将无法使用您的完全代码。

缺点#2:如果你是iOS开发的初学者,你很容易变得“懒惰”而不学习如何完全从代码构建一个完整的UI。在编写具有大量小细节的高度动态接口时,这是一项非常有用的技能。

  

无论如何,忽略Interface Builder会使我在将来构建应用程序时处于劣势。如果我只是坚持编写代码,那么我希望将来要开发的复杂应用程序是否会更难开发?

我唯一可以看到的缺点是,在开始时,从头开始编写代码可能比拖放小部件要慢,但即使这种差异随着时间的推移也会变小。

  

我目前正在自己​​构建应用程序,但是当我开始与其他开发人员合作时,我将处于显着的劣势,因为我从未学会如何使用Interface Builder,或者我只能知道如何编写码?

一般来说,能够使用IB是在团队中工作时的预期技能,但我的个人经验证实,如果你不能/不使用它,这不是一个大问题。去年夏天,我在一家专业移动银行应用程序的企业工作。我对IB不是很有经验,我几乎从不使用它,但我是最富有成效的开发人员之一。

答案 2 :(得分:2)

该主题已经很好地涵盖了。让我简洁地提出我的观点。

在iOS开发的早期阶段,Interface Builder非常错误,完全避免它是确保减少错误(从而节省时间)的合法方式。

同样不再适用。如果您从代码中完成所有工作,那么创建用户界面的时间将会增加3倍。

故事板也是向其他人解释屏幕流的简单方法。