Macos OSX/Swift中nib文件泄漏的自定义文件所有者

Macos OSX/Swift中nib文件泄漏的自定义文件所有者,macos,swift,Macos,Swift,我需要我的类,称之为Document,成为包含用户界面的nib的文件所有者(就像Document:NSDocument是苹果基于文档的模板中的文件所有者一样)。同样,我不希望文档从NSWindowController继承,而是希望管理一个实例,该实例将加载nib并将其文档设置为文件所有者: let windowController = NSWindowController(windowNibName: "DocumentWindow", owner: self) 听起来很简单,但我无法让文件所

我需要我的类,称之为
Document
,成为包含用户界面的nib的文件所有者(就像
Document:NSDocument
是苹果基于文档的模板中的文件所有者一样)。同样,我不希望
文档
NSWindowController
继承,而是希望管理一个实例,该实例将加载nib并将其
文档
设置为文件所有者:

let windowController = NSWindowController(windowNibName: "DocumentWindow", owner: self)
听起来很简单,但我无法让文件所有者与所有其他nib对象一起解除分配。原因是,根据苹果公司的说法,“出于历史原因,在OS X中,nib文件中的顶级对象是通过额外的引用计数创建的。”(请参阅:)

如果我将窗口的
isReleasedWhenClosed
设置为
true
,并将属性本身设置为
nil
,则调用其
deinit
。与
NSWindowController
的实例类似。。。但是文件所有者
文档的实例仍然存在!它是
deinit
从未调用过

如果我将文件所有者设置为窗口控制器,那么一切都会很好地处理,包括
文档
实例,但是这个设置很难子类化,这正是我需要的。。。我需要
文档
实例作为文件所有者

因此,就我的情况而言,文件建议如下:

如果文件所有者不是
NSWindowController
的实例,或
NSViewController
,则需要减少 顶层对象是您自己。必须将引用强制转换为顶级 对象到核心基础类型并使用<代码> cFrRys.P/> 但我怎样才能在斯威夫特做到这一点

如果您有任何见解和建议,我们将不胜感激