我有一个nib文件,其中包含一堆视图和自定义对象。其中一个对象是自定义控制器对象。在它的awakeFromNib方法中,我想访问包含所有这些内容的窗口。我不知道如何在这一点上获得窗口。但是,此自定义对象具有视图的出口。我知道你可以通过调用[nameOfView窗口]来获取窗口但是由于某种原因,此时,正在为窗口返回nil,即使视图不是nil。窗口在什么时候不是零?
作为旁注,如果我将窗口作为参数传递给从nib文件加载的自定义对象,我是否必须担心释放/保留它?内存管理如何使用从笔尖加载的对象中的这个NSWindow?
答案 0 :(得分:2)
如果我理解正确,您将无法在笔尖加载过程中执行此操作:
awakeFromNib
被发送到该nib文件中的对象,包括您的自定义控制器对象; nameOfView
的引用(可能通过自定义控制器)并将其添加到窗口的视图层次结构中。加载包含视图的nib文件不会自动将这些视图添加到窗口的视图层次结构中,这就是[nameOfView window]
返回nil
自定义控制器awakeFromNib
实现的原因。由于在步骤1中有一个主控制器负责触发该nib文件的加载,我假设这个主控制器负责向窗口添加视图。让主控制器在发生这种情况时向自定义控制器发送消息,以便您的自定义控制器知道何时将nameOfView
添加到窗口。