iPhone SDK开发obj-C vs界面构建器

时间:2010-06-11 21:41:57

标签: objective-c iphone

我是iOS平台的新手。我不清楚界面构建器的用途。看起来我可以完全避免使用它,只需在目标c中编写所有代码。我对吗? IB有什么可以做的但是obj-c不能吗?

它让我想起了visual basic 6。

8 个答案:

答案 0 :(得分:5)

你也可以完全避免使用C并在ARM程序集中编写所有内容......

InterfaceBuilder有点像编译器。它是您使用的工具[希望]让您的生活更轻松。它不生成代码,它会生成描述您的特定接口文件的二进制存档。虽然您可以在Interface Builder中手动执行代码中的所有操作,但这会浪费时间。

专业人士绝对使用IB。例如,Apple的所有应用程序都是用IB构建的。

至于与同事共享文件,绝对应该通过Subversion,Perforce或Git等修订控制系统来完成。虽然你可以通过电子邮件发送你的项目 - 包括xib文件 - 这很容易出错。最好使用源代码管理工具来处理共享和更改跟踪。

答案 1 :(得分:4)

您绝对可以在不使用Interface Builder的情况下编写所有代码。但是,如果你学会使用它,IB可以让你的生活更轻松。

答案 2 :(得分:2)

您可以避免使用它,就像您可以避免使用数组一样,只需创建大量名为thing1thing2thing3等的变量,您就可以通过内联复制和粘贴内容来避免使用函数。换句话说:你不必使用它,但你通常会想要。

Interface Builder与Visual Basic不同,它实际上是一个非常有用的工具,真正为大公司工作的程序员实际上用它来构建他们的应用程序。

答案 3 :(得分:2)

不。 Interface Builder的存在是为了让您的生活更轻松,但您不必使用它。

答案 4 :(得分:1)

您是否认为Interface Builder是代码生成器?

IB本身不生成代码。它生成的NIB文件基本上是序列化的对象,在加载时会被解压缩并实例化。

事实上,IB可以轻松定位您的用户界面,然后将其置于首位,而不必痛苦地将其全部写出来而无法在没有工作应用程序的情况下将其可视化,这使其成为必不可少的工具。

真正的问题通常是何时使用NIB文件以及何时以编程方式生成视图。我最近看到的建议建议在视图有子视图时使用在IB中创建的NIB文件。

答案 5 :(得分:0)

您可以在界面构建器中执行任何操作,您可以在代码中做得很好。如果你喜欢拖动线条并构建像legos这样的程序,那么界面构建器就很棒了。如果您更喜欢文本,请在代码中进行。

当我编写代码时,我也倾向于打开终端。例如,我使用命令行subverison,即使它是构建到xcode中。我不会说一种方式或另一种方式更好,这只是你工作方式和思考方式的问题。我几乎从不使用界面构建器,但这是个人选择。

您只能在代码中执行一些操作,但这些操作非常少见,可以轻松地与界面构建器一起使用。

在界面构建器中还有一些更好的东西。它很少出现在我身上,但是只要你拥有相当于带有几个不同控件的html表单,我认为界面构建器是更好的选择。我最终在我的程序中有很多表格,网页和文本视图,但填写的表格并不多。

答案 6 :(得分:0)

绝对正确的是,nib文件对你来说没有任何关系,你不可能在代码中做到这一点!实际上,在特定情况下,在代码中使用nib文件和仅创建这些实例之间的决定可能是一个艰难的决定。不过,至少有时候,nib文件会更方便。

将Interface Builder视为创建实例的另一种方式。一个nib文件包含(在你的想象中)类名(如UIWindow,UIView,UIButton等等)以及如何实例化这些类和配置实例的指令(例如,使这个UIButton成为一个Round Rect,标题为“Tap Me” !“)。

在某些时候,如果nib 已加载,则实际创建了所有这些实例。

因此,nib文件是一种以图形方式配置一堆实例的好方法(显然,当它们是UIView子类时非常有用),并通过加载nib一次性地将它们全部用到生命中。如果你有一个大的对象图 - 一个充满按钮,字段和东西的UIView - 在nib文件中进行设计和配置可以使你的代码更简单,更易于维护。

此外,您可以反复加载相同的笔尖以获取新实例。这就是为什么在笔尖中设计UITableViewCell是一种很好的方法。

答案 7 :(得分:0)

我已经尝试了一点IB。但经过一番尝试后,我放弃了。如果你想做更多的自定义用户界面,或者不要通过拉动和放弃你的想法。拖动控件,您最好选择objective-c代码作为第一个选项。 BTW,使用objective-c编写UI并不像android那么容易,因为没有布局这样的东西。