Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos IBOutlet何时初始化?_Macos_Cocoa_Iboutlet - Fatal编程技术网

Macos IBOutlet何时初始化?

Macos IBOutlet何时初始化?,macos,cocoa,iboutlet,Macos,Cocoa,Iboutlet,我通过Interface Builder为文本视图设置了一个出口。文本视图加载良好,但是我无法以编程方式访问它的任何属性,因为出口总是nil 它什么时候实例化?即使调用了我的ApplicationIDFinishLoading,它仍然不是“活动”或未归档。请确保已将IBoutlet链接到正确的文件所有者。单击“文件所有者”,然后单击“标识检查器”,查看文件所有者是否指向正确的文件 单击Interfacebuilder->Objects下的对象 在Outlets下,确保显示IBoutlets的属性

我通过Interface Builder为文本视图设置了一个出口。文本视图加载良好,但是我无法以编程方式访问它的任何属性,因为出口总是
nil


它什么时候实例化?即使调用了我的
ApplicationIDFinishLoading
,它仍然不是“活动”或未归档。

请确保已将IBoutlet链接到正确的文件所有者。单击“文件所有者”,然后单击“标识检查器”,查看文件所有者是否指向正确的文件

  • 单击Interfacebuilder->Objects下的对象
  • 在Outlets下,确保显示IBoutlets的属性。如果没有显示,则文件所有者可能是错误的
  • 将插座链接到对象-单击->将线拖动到对象

  • IBoutlets应该在初始化包含.h中的IBoutlets的视图控制器(也称为文件所有者)时创建

    出口不会实例化,因为出口是变量(或属性)

    nib中的对象在加载该nib时被实例化,并在创建对象之后,但在将
    awakeFromNib
    发送到所有相关对象之前,尽可能立即分配给每个出口

    换句话说,nib加载按以下顺序执行所有操作:

  • 创建或重新创建nib中存储的所有对象。(这不包括文件的所有者、第一响应者以及其他外部和虚拟对象。)
  • 将nib中连接的每个出口属性设置为nib连接到的同一nib中的对象。(例如:视图控制器的
    视图
    出口到顶层视图。)
  • awakeFromNib
    发送到nib中的对象,以及(在Cocoa中)文件的所有者(例如,窗口控制器)
  • 你的问题的答案是#2

    。Cocoa和Cocoa Touch在细节上有细微的不同,特别是在哪些对象是从NIB发送的、哪些对象不是

    它什么时候实例化?即使调用了我的
    applicationdFinishLoading
    ,它仍然不是“活动”或未归档的

    文本视图不是吗

    可能是的,你只是没有连接插座。在笔尖上勾选这个


    另一种可能性是:您在另一个nib中创建了文本视图,而不是创建应用程序代理的nib(如果您甚至在nib中创建了应用程序代理),并且您没有将视图连接到正确对象的出口。也许您在文本视图的nib中创建了第二个应用程序委托;此应用程序代理实际上不是应用程序的代理,这就是为什么真正的应用程序代理看不到您将文本视图提供给冒名顶替者的文本视图,而不是真正的McCoy。

    它位于
    awakeFromNib
    中,并且在此之后调用appDidFinishLaunching。检查。很可能你还没有钩住它。编辑你的帖子以包含你尝试访问文本视图的方法的全部源代码。博客上有一篇非常好的博客文章,详细介绍了启动顺序:@AnoopVaidya:小心“in”这个词。插座未由
    awakeFromNib初始化
    ;它们在
    唤醒fromnib
    之前初始化。它们是“在
    awakeFromNib
    中初始化的”,意思是
    awakeFromNib
    中的代码将看到初始化的出口(因为它们已经初始化),而不是未初始化的出口。
    IBOutlet
    不必在标题中。另外,您希望在哪个对象上看到插座?如果还没有建立连接,那么应该插入插座的对象将根本不会显示另一个对象的插座属性,如果FO不是这两个对象中的任何一个,那么这并不意味着任何关于文件所有者的信息。