【问题标题】:Cocoa: what creates the instance of a controller class linked to a NIB file?Cocoa:是什么创建了链接到 NIB 文件的控制器类的实例?
【发布时间】:2010-02-04 20:48:01
【问题描述】:

这是一个关于 Cocoa NIB 文件的内部工作原理和它们的支持框架类的问题。

如需方便的示例,请查看 Apple 货币计算器教程:http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjCTutorial/01Introduction/01Introduction.html

如果您打开 MainMenu.nib 文件,您将看到一个表示“转换器控制器”的对象。

当应用运行时,ConvertController 类的一个实例被应用中的某些东西(NIB 中的某些东西,或支持 NIB 的框架)实例化。

(不要将它与另一个类 Converter 混淆,它的实例由 ConverterController 中的代码创建。)

我的问题是,是什么创建了这个 ConverterController 实例?它是 NIB 中默认的 File's Owner 对象吗?无论对象创建实例,该对象使用的代码是什么? NIB 或框架中的某处必须有一些方法/功能说:

ConverterController *someVarName = [[ConverterController alloc] init];

我想查看该代码,即当前用于创建 ConverterController 实例的特定代码。

我不想知道如何为 ConverterController 实例创建替代品,或者一般来说如何手动实例化与 NIB 文件相关的类实例。

【问题讨论】:

    标签: cocoa nib xib


    【解决方案1】:

    笔尖是对象的存档。它们是在 Interface Builder 中创建的,当加载 nib 时,其中的对象将被取消归档并链接起来。

    【讨论】:

    • 这不是不实陈述。
    • 但是那些神秘地投票赞成答案的人请注意——这是一个与我提出的问题无关的陈述。
    • 直接相关。你问是什么创建了实例——我回答说是 Interface Builder 做的。没有“笔尖中的代码”——笔尖只是一个存档。这就是答案。
    • 谢谢你——不是那个人的意思。有些东西正在初始化外部控制器对象 ConverterController(如果我没记错的话,它只是链接而不是自己存档)。这很可能是 NIB 中的已归档对象之一,在它取消归档并开始工作之后。
    【解决方案2】:

    查看开发者文档中的Resource Programming Guide 文档。 Nib 文件部分是一个很好的概述,“内置对 Nib 文件的支持”小节解释了在多种情况下如何加载 nib 文件。

    【讨论】:

      【解决方案3】:

      查看 Info.plist 文件。

      其中一个部分用于主 Nib 文件名。这是应用程序启动时未归档的 nib。通常,这是 MainMenu.xib。

      因为控制器对象在这个主 nib 文件中,所以它是在 nib 文件取消归档时创建的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-23
        • 1970-01-01
        • 2011-11-30
        • 1970-01-01
        • 2011-03-01
        • 1970-01-01
        相关资源
        最近更新 更多