5

I am slowly learning how to build Apps in Xcode and Objective-C and Ive been reading this blog post about writing Cocoa Touch Apps without ever using the Interface Builder, and this blog post about how someone just uses Interface Builder whenever they can.

I find myself leaning more towards avoiding to use the Interface Builder, as I can find problems faster if its just plain code, and at this point I am more familiar with writing code than using the Interface Builder.

So I am considering avoiding to use the Interface Builder altogether. But before I do I wanted to know the following:

  • Is there any time when you absolutely must use Interface Builder? Is there anything that is impossible to achieve without it? (I know the reverse is true.)

  • Are there any practices I can employ to help me not miss out on the advantages Tal Bereznitskey outlines for using Interface Builder. I am specifically thinking of the points he makes about it being easier to maintain and easier to prototype and change stuff.

  • Will ignoring the Interface Builder altogether put me at a disadvantage in anyway for building Apps in the future. Will the complex Apps that I hope to be working on in the future be significantly more difficult to develop if I just stick to writing code?

  • I am currently just building Apps by myself, but when I start working with other developers will I be at a significant disadvantage because I never learnt how to use Interface Builder, or will I be able to get by just knowing how to write code?

4

3 回答 3

4

我的开发经验以及 IB 的优缺点:

首先让 IB 消除复杂性,因为它掩盖了对只能在代码中表达的核心概念的学习。尽管 IB 隐藏了原本显而易见的连接(因此易于学习和调试),但仍有很多要说的,但通常它在删除无关代码方面做得很好。

一旦您对 Objective-C 和 cocoa 感到更熟悉,尽可能多地了解视图层次结构和 UI 元素的工作方式而不需要使用 IB 是有益的。我认为在 IB 中没有什么是你不能做的,但是当以编程方式处理时,肯定有很多东西更加灵活和强大。

从那时起,一旦您了解了底层功能,您就可以回到使用 IB 并让它节省您的时间和精力,否则您会使用设置 UIKit 元素的许多属性。

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

在与他人合作方面,IB 可以使版本控制成为一种痛苦,因为 IB 文件的 Plist/Backing 并不总是能很好地进行合并等......但是我想说,如果你是从学习的角度来的先写代码,然后学习 IB 会更容易,反之亦然。在团队中工作最重要的规则是不要害怕提问。您的代码技能将帮助其他可以反过来帮助您进行 IB 的人。

希望有帮助。Ray Wendlerlich 网站上有很棒的教程,用谷歌搜索他。

于 2013-07-23T16:31:35.643 回答
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 不是很有经验,而且我几乎从不使用它,但我是最有生产力的开发人员之一。

于 2013-07-23T16:46:31.627 回答
2

这个话题已经很好地涵盖了。让我简要介绍一下我的观点。

在 iOS 开发的早期,Interface Builder 有很多错误,完全避免它是确保更少错误(从而节省时间)的合法方法。

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

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

于 2013-07-23T17:56:06.187 回答