我通过Interface Builder为文本视图设置了一个插座。文本视图加载正常,但我无法以编程方式访问它的任何属性,因为插座始终为nil
。
什么时候实例化?即使在我的applicationDidFinishLoading
被调用之后,它仍然没有“活着”或未归档。
答案 0 :(得分:12)
插座不会实例化,因为插座是变量(或属性)。
当加载该nib时,nib中的对象被实例化,并且在创建对象之后但在awakeFromNib
被发送到所有相关对象之前,它们被尽可能地分配给每个出口。
换句话说,nib加载按以下顺序执行以下所有操作:
view
出口到顶层视图。)awakeFromNib
发送到nib中的对象,并(在Cocoa中)也发送到文件所有者(例如,窗口控制器)。您的问题由#2回答。
The Resource Programming Guide has more information。 Cocoa和Cocoa Touch之间的细节略有不同,特别是关于哪些对象发送awakeFromNib
消息以及哪些不是。{/ p>
什么时候实例化?即使在我的
applicationDidFinishLoading
被调用之后,它仍然没有“活着”或未归档。
文字视图不是?
可能是,你只是没有连接插座。在笔尖中检查一下。
另一种可能性:您在另一个笔尖中创建了文本视图,而不是创建应用程序委托的那个(如果您甚至在笔尖中创建了应用程序委托),并且您没有将视图连接到出口正确的对象。也许您在文本视图的笔尖中创建了第二个应用程序委托;这个应用程序委托实际上并不是应用程序的委托,这就是真正的应用程序委托没有看到文本视图的原因 - 你将文本视图提供给冒名顶替者,而不是真正的McCoy。
答案 1 :(得分:0)
确保已将IBoutlet链接到正确的文件所有者。单击“文件所有者”,然后单击“身份检查器”以查看文件所有者是否指向正确的文件。
当初始化包含.h中的IBoutlet的视图控制器-aka文件所有者时,应创建IBoutlet。