7

我开始在一家新公司开发 ios。在这里他们教我永远不要使用 iterface-builder,说它很难维护代码并且有一些限制。

在 netbeans 中使用 java 应用程序的接口构建我看到很多“错误代码”,但我没有看到它使用 IB,此外我在互联网上看到很多 IB 代码,只有少数代码没有它。

那么对于一个没有人是 ios 开发初学者的大公司来说,使用 IB 是一种不好的做法吗?

4

4 回答 4

18

(让我提前提一下,我强烈反对使用 Interface Builder,原因有很多,我会解释)

在这里,他们教我永远不要使用 Interface Builder,说它很难维护代码并且有一些限制。

这只是部分正确。我一般不喜欢 Interface Builder 和 Xcode 的主要原因是许多初学者程序员认为这是开发 iOS/OS X 应用程序的唯一方法。他们从未听说过gccand clang,他们不知道编译器和链接器错误消息是什么意思,他们无法使用make,他们不知道 Objective-C 语言、Cocoa (Touch) API 之间的区别是什么, IDE和编译器是。

毕竟,他们开始使用 Interface Builder 和 Xcode 及其所有古怪的,有时甚至是奇怪/不合逻辑的功能(以及错误),但是当他们需要开发一些不明显的东西时,他们甚至没有意识到那里是一种方法,例如,以编程方式创建视图和视图控制器(是的,我在 StackOverflow 上看到过这个问题)。

因此,当被滥用(或者更确切地说,使用得太早)时,Interface Builder 和所有“方便”的特性会导致程序员学习糟糕的概念并错过一些重要的实践和经验。

但是,如果您是一名高级开发人员,拥有所有必要的技能,并且您认为您可以使用简单的文本编辑器和 Makefile 从头开始​​编写整个应用程序,那么您绝对可以使用 IB,如果您觉得这比编写代码更舒服,甚至鼓励您这样做。

所以,总结一下:

使用界面生成器真的是一种不好的做法吗?

不。宁可滥用它而不努力学习 UI 的编程方法是不好的做法。

后记:我在 iOS 开发方面有相当多的经验,但我仍然发现 Interface Builder 相当不方便且不一致。我通常对所有事情都使用代码。但这似乎是我个人的喜好。然而,一个优势是,如果一个人通过代码创建所有内容,那么另一个无法访问这些 Apple 特定工具的程序员也将能够为该项目做出贡献。这是“难以维护”部分成为现实的一点......

例如,在我没有足够的钱购买 Mac 之前,我使用 Linux 来开发 iOS 应用程序(是的,这实际上是可能的)。我不能使用 IB 和 Xcode,但我已经完成了大量的应用程序和调整(当然是针对越狱的 iOS),这很好。

Post scriptum #2:避免使用 IB 的另一个原因可能是需要动态 UI。如果您严重依赖动画、自定义 UI 元素等,则很难在 Interface Builder 中完成所有工作。去年夏天,我不得不重写一个应用程序的登录屏幕,老实说,如果我不得不使用 Interface Builder,我不知道我怎么能实现我们设计师的想法。UI/UX 是如此的动态,它有很多方法可以改变,因此绝对有必要对每个像素进行精细控制。这就是代码比 IB 更擅长的事情。

于 2012-12-18T16:20:36.200 回答
6

我强烈不同意 IB 是一种不好的做法。与代码相比,Interface Builder 具有以下优点:

  • 当使用复杂(甚至简单)的图形界面时,IB 将代码缩减到一小部分——例如,在 IB 中简单地创建一个按钮需要几秒钟,而在代码中,这会转化为几十行,尤其是如果按钮要设置样式

  • 使用自动调整大小的蒙版来支持多种分辨率和设备是一件轻而易举的事——这很重要,因为 Apple 现在正在推动与分辨率无关的应用程序

  • 更改/调整视图属性只需单击几下而不是几行代码,尤其是在处理图像时

但是,有一个缺点(我想到了):

  • 很难确定可能导致图形问题的原因,因为它将隐藏在 IB 文件中而不是代码中
于 2012-12-18T16:09:46.657 回答
4

已经说了很多,但我仍然会为这次讨论付出我的 2 美分......

直到某个时候我同意H2CO3,最好了解幕后发生的事情,而不是继续使用快捷方式来实现某些目标。这在大多数情况下都有效,这就是我强烈反对H2CO3的地方,如下:

  • 大多数使用技术(C#、Java、HTML、iOS 等)的人,他们使用它是因为他们的公司需要他们使用它,因为实际上其他人会付钱让你使用它。并不是因为你真的在半夜醒来,突然有学习 C 的冲动。

  • 如果明天有人要求你创建一个 iOS 应用程序,而你以前从未为 iOS 开发过,我真的怀疑你会在不使用 XIB 或 Storyboards 的情况下从头开始创建一个应用程序(我讨厌顺便说一句)。

H2CO3 提出的是一个乌托邦......你真正了解下面发生的事情,但因为你是这样一个“leet”,你可以使用捷径,比如 XIB。好吧,事情不是这样的,迟早你将不得不做一些糟糕的事情来在第二天早上交付一些东西。

我更喜欢,这是个人观点,使用 XIB,而不是使用我面前的第一个 3rd 方库。而且我认为这比手工制作界面更合理。我更喜欢理解代码并自己完成,而不是使用例如库来帮助我下载/上传东西。

总结一下,我对提出这个问题的人的建议是:

试着去理解为什么事情是这样完成的。最重要的是,在你面临的每个新项目中努力成为一个更好的程序员。如果有新的东西出现(新的 iOS 版本),花一两天时间看看有什么新东西,你可以使用什么。XIB 非常好用,但要花一些时间UIView's手工创建,这样您就可以看到它们给您的所有灵活性。最重要的是,远离故事板(^^)

PS:资深开发者不只是一个“功夫比你好”的人..还不止这些。

于 2012-12-18T17:48:37.513 回答
4

绝对不。Interface Builder 是一种非常强大的快速创建 UI 的方法。尤其是 Storyboards,它可以让你用很少的代码制作功能性的应用程序。

它“创建错误代码”的问题是垃圾,因为 IB 不创建任何代码。它创建的文件本质上是补充您编写的代码的 XML 文件。

我开发的大多数应用程序大多是在 IB 上开始的。

显然,你不能做你的应用程序的功能性东西。即,您无法准确地告诉按钮该做什么。但是您可以将它指向您编写的函数并获得一个几乎没有代码的工作按钮。

iPad 和 iPhone 上 iPhoto 中的大部分 UI 都是用 Interface Builder 编写的。

于 2012-12-18T16:10:46.410 回答