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/>
但我怎样才能在斯威夫特做到这一点
如果您有任何见解和建议,我们将不胜感激