2

我对objective-c很陌生,看来我的问题太基本了,周围没有什么简明扼要的(我只是因为阅读而变得更加困惑)。

当你创建一个 .xib 文件时,你将它链接到一个控制器(通常,我认为)。同时,您可以通过在代码中定义视图来做您可以在 .xib 中做的事情。当我意识到你拖到 .xib 上的大多数项目都是视图对象时,我以为我理解了其中的一部分。我从那里猜想 .xib 在某种程度上只是代表视图的真实代码。那准确吗?还是我完全错了?我真的不知道。

4

3 回答 3

2

Xib 文件不代表视图的真实代码,仅代表视图数据的结构。每个 xib(或故事板)都有足够的信息来执行以下所有操作:

  • 实例化视图元素
  • 设置视图的各个元素的属性
  • 在层次结构中连接视图的元素
  • 将 Nib 中对象的“出口”连接到代码中视图的属性或变量。

但是,那里没有“真正的代码”,只有元数据。Cocoa 有足够的智慧来构建和连接对象,但实际代码始终在您的 .m 文件中。

于 2013-06-11T04:10:10.183 回答
2

视图控制器管理由许多子视图组成的视图。而每个视图最多只能有一个超级视图。(对于最顶层的视图,superview 为零)。这称为视图层次结构

层次结构中的顶级视图可以使用纯代码定义,也可以使用生成 xib 的 Interface Builder 定义。

探索视图控制器之间的关系也很有用。在一个应用程序窗口中,还可以有多个视图控制器,每个控制器管理自己的顶级视图。这称为视图控制器包含。这方面的一个例子是 UINavigationController 或标签栏控制器。. .在更复杂的应用程序中,通常设置自己的根控制器来管理控制器层次结构的这一方面。(例如,滑动以显示导航控制器,该控制器位于主要内容控制器下方)。

于 2013-06-11T04:10:23.177 回答
0

XIB 描述符合NSCoding但通常用于布局视图层次结构的任意对象。所以它主要是UIViews,通常带有UIViewController.

然而,它们是纯粹的数据。不生成代码。系统读取 XIB 并创建对象纯粹是作为数据读取练习。

Objective-C 有一个完全反射的运行时——你可以通过名称作为字符串查找类,并且可以以相同的方式调用它们的方法,甚至不知道该方法是否真的存在。秘密编写代码的接口构建器(例如 Microsoft 在 Visual C++ 中编写的代码)倾向于这样做,因为他们无法纯粹通过解析数据来建立您所描述的任何内容。

于 2013-06-11T04:11:03.930 回答