【发布时间】:2013-01-18 16:30:45
【问题描述】:
我有一个基于文档的应用程序,具有推荐的 NSDocument / NSWindowController 设置。每个窗口都有自己的NSWindowController 实例和关联的XIB 文件。界面在-(id)init:if (self = [super initWithWindowNibName:@"DocumentWindow"]) { // yadda yadda } 中非常直接地加载。 XIB 文件包含一个对象,该对象代表一个单独的控制器,每次用户打开新窗口时都应实例化该控制器。它显示仅与当前文档相关的数据。当我用-(id)initWithWindowNibName: 解压缩对象时,尽管有两个不同的窗口控制器并且尽管调用了两次-(id)initWithWindowNibName:,但我总是得到对同一个实例的引用。 XIB 加载机制似乎只对同一个归档对象进行一次解压(真的吗?)。
除了在代码中分配单独的对象,手动加载视图,计算它们的大小,将它们添加为子视图,然后设置绑定并注意在窗口关闭时手动解除绑定之外,没有其他办法了吗?
因为我自己的愚蠢,我正用头撞墙。它只会让事情变得更糟。
【问题讨论】:
-
您确定有问题的对象实际上在 XIB 中,而不是“文件所有者”(实际上不在 XIB 中)。
-
该问题与XIB加载机制完全无关,请参阅下面的答案。
标签: objective-c cocoa xib instantiation nswindowcontroller