1

我已经创建了一个基于应用程序文档,但是我在处理 IBOutlet 时遇到了问题,因为当我在第一个窗口的文档中选择了某个控制器时,有时另一个窗口文档中的另一个相同的控制器也被选中了......也许我做错了强/弱/读写或我不太确定的东西,所以我决定强制我的应用程序只有一个窗口文档。现在我的问题。我有一个arrayController,当我启动我的应用程序并打开保存的文件时,它会关闭默认创建的“空白文档”并显示加载数据的新窗口文档。问题是在 windowControllerDidLoadNib 内部调用的第二个窗口的 arrayController 是正确的指针(由 makeWindowControllers 创建)但是当我在代码中使用它时,它有另一个指针,它是已关闭的空白文档的旧 arrayController!为什么?关闭方法会释放一切吗?(我使用ARC)。对不起,如果我的话有混淆,我是新手。谢谢你。这是我的代码:

Document* newDoc = [[Document alloc] init];
[[NSDocumentController sharedDocumentController]addDocument:newDoc];
[newDoc makeWindowControllers];
[newDoc showWindows];
4

1 回答 1

0

我已经解决了这个问题:当您将某个对象的通知定义为 nsdocument 时,这些通知在关闭调用后不会被释放。所以你需要删除观察者!

于 2013-11-12T18:19:50.183 回答