Xcode:避免Interface Builder是个好主意吗?

我正在慢慢地学习如何在Xcode和Objective-C中构build应用程序,并且我一直在阅读这篇关于编写Cocoa Touch应用程序的博客文章 ,而没有使用Interface Builder,而且这篇博客文章介绍了某人只要可能就使用Interface Builder。

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

所以我正在考虑避免完全使用Interface Builder。 但在此之前我想知道以下几点:

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

  • 有没有我可以用来帮助我不要错过Tal Bereznitskey使用Interface Builder概述的优点。 我特别想到了他所做的关于维护更容易,更容易原型和改变的东西。

  • 无论如何,忽略界面生成器会使我在将来构build应用程序时处于劣势。 如果我只是坚持编写代码,那么我希望在未来将要开发的复杂应用程序会更难以开发吗?

  • 我目前只是自己构build应用程序,但是当我开始与其他开发人员合作时,我会处于一个非常不利的地位,因为我从来没有学会如何使用Interface Builder,或者只有知道如何编写代码才能获得?

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

首先让IB去掉复杂性,因为它忽视了只能在代码中expression的核心概念。 有很多事情要说,虽然IB隐藏了连接,否则将是显而易见的(因此易于学习和debugging),但通常它会很好地删除无关的代码。

一旦您对Objective-C和cocoa感觉更舒适,尽可能多地了解视图层次结构和UI元素的工作方式,而无需使用IB是有益的。 我不认为在IB有什么不能做的事情,但是当编程处理时,它们肯定会更灵活和更强大。

从这一点上,一旦你了解了底层函数,那么你可以回到使用IB,让它节省你的时间和精力,否则你会设置许多UIKit元素的属性。

解决您关于错过的担忧。 我想说,花一些时间去学习Storyboard(一个规划UI的集体方法)和XIB / NIB文件(其中一个UI的单个文件与单个视图控制器相关联)。 故事板是更新的,很less有人完全理解,包括我在内! NIB和XIB更强大/不那么明显,但仍然非常重要,因为有些事情在故事板中效果不佳。

在与他人合作方面,由于IB文件的Plist / Backing并不总是很好地融合等,所以IB可以使版本控制变得非常痛苦。但是我会说如果你是从学习的angular度来的先学习代码然后再学习IB会比较容易。 在团队中工作的最重要的规则是不要害怕提问。 您的代码技能将帮助其他人,他们可以反过来帮助您与IB。

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

这个话题已经被覆盖了。 让我简单地把我的观点抛诸脑后。

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

现在不是这样了。 如果您从代码中完成所有工作,您将花费3倍的时间来创build用户界面。

另外,故事板是向他人解释屏幕stream的简单方法。

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

据我所知,不。

有没有我可以用来帮助我不要错过Tal Bereznitskey概述使用Interface Builder的优点的做法。 我特别想到了他所做的关于维护更容易,更容易原型和改变的东西。

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

优点1:快速调出适度复杂的界面更容易。

优点2:由于它与开发工具深度集成,您几乎可以绝对确定它在应用程序的用户界面中保持一致。 例如,我已经体会到,当我构build了一个表视图控制器时,我错过了代码中的一些细节,并且在表视图上方有一些多余的空白空间。 当我使用IB时,这个错误没有发生。

缺点#1:对于开源库和应用程序,没有IB的开发者(例如那些使用非官方工具链的开发者和/或那些为Theos等越狱设备开发的开发者)将无法充分利用您的代码。

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

无论如何,忽略界面生成器会使我在将来构build应用程序时处于劣势。 如果我只是坚持编写代码,那么我希望在未来将要开发的复杂应用程序会更难以开发吗?

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

我目前只是自己构build应用程序,但是当我开始与其他开发人员合作时,我会处于一个非常不利的地位,因为我从来没有学过如何使用Interface Builder,或者只有知道如何编写代码才能获得?

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