Macos IBOutlet何时初始化?
我通过Interface Builder为文本视图设置了一个出口。文本视图加载良好,但是我无法以编程方式访问它的任何属性,因为出口总是Macos IBOutlet何时初始化?,macos,cocoa,iboutlet,Macos,Cocoa,Iboutlet,我通过Interface Builder为文本视图设置了一个出口。文本视图加载良好,但是我无法以编程方式访问它的任何属性,因为出口总是nil 它什么时候实例化?即使调用了我的ApplicationIDFinishLoading,它仍然不是“活动”或未归档。请确保已将IBoutlet链接到正确的文件所有者。单击“文件所有者”,然后单击“标识检查器”,查看文件所有者是否指向正确的文件 单击Interfacebuilder->Objects下的对象 在Outlets下,确保显示IBoutlets的属性
nil
它什么时候实例化?即使调用了我的
ApplicationIDFinishLoading
,它仍然不是“活动”或未归档。请确保已将IBoutlet链接到正确的文件所有者。单击“文件所有者”,然后单击“标识检查器”,查看文件所有者是否指向正确的文件
IBoutlets应该在初始化包含.h中的IBoutlets的视图控制器(也称为文件所有者)时创建 出口不会实例化,因为出口是变量(或属性) nib中的对象在加载该nib时被实例化,并在创建对象之后,但在将
awakeFromNib
发送到所有相关对象之前,尽可能立即分配给每个出口
换句话说,nib加载按以下顺序执行所有操作:
视图
出口到顶层视图。)awakeFromNib
发送到nib中的对象,以及(在Cocoa中)文件的所有者(例如,窗口控制器)applicationdFinishLoading
,它仍然不是“活动”或未归档的
文本视图不是吗
可能是的,你只是没有连接插座。在笔尖上勾选这个
另一种可能性是:您在另一个nib中创建了文本视图,而不是创建应用程序代理的nib(如果您甚至在nib中创建了应用程序代理),并且您没有将视图连接到正确对象的出口。也许您在文本视图的nib中创建了第二个应用程序委托;此应用程序代理实际上不是应用程序的代理,这就是为什么真正的应用程序代理看不到您将文本视图提供给冒名顶替者的文本视图,而不是真正的McCoy。它位于
awakeFromNib
中,并且在此之后调用appDidFinishLaunching。检查。很可能你还没有钩住它。编辑你的帖子以包含你尝试访问文本视图的方法的全部源代码。博客上有一篇非常好的博客文章,详细介绍了启动顺序:@AnoopVaidya:小心“in”这个词。插座未由awakeFromNib初始化
;它们在唤醒fromnib
之前初始化。它们是“在awakeFromNib
中初始化的”,意思是awakeFromNib
中的代码将看到初始化的出口(因为它们已经初始化),而不是未初始化的出口。IBOutlet
不必在标题中。另外,您希望在哪个对象上看到插座?如果还没有建立连接,那么应该插入插座的对象将根本不会显示另一个对象的插座属性,如果FO不是这两个对象中的任何一个,那么这并不意味着任何关于文件所有者的信息。