我通过 Interface Builder 设置了文本视图的出口。文本视图加载正常,但是我无法以编程方式访问它的任何属性,因为出口始终是nil
.
什么时候实例化?即使在我之后applicationDidFinishLoading
被调用,它仍然不是“活动的”或未归档的。
插座不会实例化,因为插座是变量(或属性)。
加载 nib 时,nib 中的对象会被实例化,并且在创建对象之后但之前,它们会尽可能立即分配给每个出口。awakeFromNib
被发送到所有相关对象。
换句话说,笔尖加载按以下顺序执行以下所有操作:
- 创建或重新创建存储在笔尖中的所有对象。 (这excludes文件的所有者、第一响应者和其他外部和想象的对象。)
- 将笔尖中连接的每个插座属性设置为笔尖所连接到的同一笔尖中的对象。 (例如:视图控制器的
view
出口到顶层视图。)
- Sends
awakeFromNib
笔尖中的对象,以及(在 Cocoa 中)文件的所有者(例如,窗口控制器)。
#2 回答了你的问题。
资源编程指南有更多信息 http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html。 Cocoa 和 Cocoa Touch 之间的细节略有不同,特别是在发送哪些对象方面awakeFromNib
消息以及哪些消息不是。
什么时候实例化?即使在我之后applicationDidFinishLoading
被调用,它仍然不是“活动的”或未归档的。
文本视图不是吗?
可能是这样,只是您没有连接插座。在笔尖上检查一下。
另一种可能性:您在另一个笔尖中创建了文本视图,而不是在创建应用程序委托的笔尖中创建了文本视图(如果您甚至在笔尖中创建了应用程序委托),并且您没有将视图连接到右侧的出口目的。也许您在文本视图的笔尖中创建了第二个应用程序委托;这个应用程序委托实际上并不是应用程序的委托,这就是为什么真正的应用程序委托看不到文本视图 - 您将文本视图提供给冒名顶替者,而不是真正的 McCoy。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)