3

我刚刚购买了一台 Mac,并开始在 Snow Leaped 中使用 XCode 探索使用 Cocoa 和 Objective-C 的软件开发,因为我拥有强大的 Microsoft 和 C# 背景

我读过的所有文档和教程都使用 Interface Builder 和 XCode 来创建带有用户界面的应用程序。我目前的理解是,由 Interface Builder 创建的对象以某种方式在 .xib 文件中定义并在运行时创建。

捆绑包包含伴随它的代码和资源。是否可以说 .xib 文件实际上是一个包含 UI 资源的包,并且该包在运行时加载(这是正确的动词吗?)并创建对象实例?

如果 abive 是真的,有什么方法可以看到 Interface Builder 生成的代码以及创建这些对象的代码点,而至少在我觉得发生了很多“魔术”时没有看到这一点,那就是在我学习的这个阶段没有帮助我。

我应该阅读什么来掌握 C# / WinForms 和 Objective-C / Mac OS / Cocoa 之间明显的范式转换?

4

2 回答 2

2

要意识到的关键是,没有任何正常意义上的代码……至少,nib/xib UI 资源不仅仅是由接口生成器生成的 Objective-c 代码的简单结构。这些对象在 nib 中有点“冻结”,在应用程序需要时“解冻”(我猜,正如 awakeFromNib 所建议的那样)。它们以 xml/plist/etc 形式存档,而不是作为生成 Objective-C 源代码的框架。

将它们视为已序列化为 xml 或其他数据的对象。

于 2009-09-21T10:28:12.947 回答
2

是否可以说 .xib 文件实际上是一个包含 UI 资源的包,并且该包在运行时加载(这是正确的动词吗?)并创建对象实例?

,捆绑包几个特定目录结构之一,而 xib 文件是常规文件,而不是目录。

xib 文件包含对象的描述。当您编译 nib(通常作为构建应用程序的一部分)时,nib 编译器会读取 xib,创建其中描述的对象,并将它们存档到 nib 中,这也不是捆绑包。

当您在应用程序中加载 nib 时,nib 加载程序会取消归档对象并确保所有出口都像在 IB 中一样在其对象之间以及与文件所有者之间进行连接。

不要担心实现细节。笔尖只是工作。你所要做的就是:

  1. 创建 xib 文件。如果您使用版本控制,这些就是您告诉它跟踪的内容。
  2. 确保它们位于 .lproj 文件夹中(以便本地化人员可以创建它们的本地化版本)。
  3. 让 Xcode 处理剩下的事情。
于 2009-09-21T11:55:03.350 回答