NSViewController未发布

时间:2016-03-08 03:42:01

标签: swift xcode7 nsviewcontroller

我对Windows与视图控制器的所有权以及它们何时发布有疑问。我创建了一个测试项目,只向NSViewController添加了一行代码:

deinit { print("ViewController Dismissed.") }

当我关闭窗户时为什么不调用它?我在Instruments中对它进行了分析,并且没有任何内存泄漏,但仍有对ViewController的引用。

另外,我在NSWindow尝试了“关闭时释放”选项,仍然没有骰子。任何人都可以帮助理解这个吗?谢谢!

Screenshot from Instruments

2 个答案:

答案 0 :(得分:0)

我会简单地将其作为评论,但我没有足够的声誉:

您的视图控制器中是否存在关闭视图控制器或控制器中的某个对象的强引用?这是可以创建保留周期的一种方式。如果就是这样,我会认为它会出现在乐器中,但这只是一个想法。

此外,您的视图控制器是否是任何类型的大型导航系统的一部分,例如标签栏控制器?这可能是一个因素。我不确定。

答案 1 :(得分:0)

据我所知,您正在运行的应用程序始终具有对窗口实例的强引用,而窗口实例又具有对视图控制器的引用。如果在关闭窗口后转到Debug View Hierarchy,你仍会在那里看到它。如果你在storyboard中删除了那个窗口的storyboard入口点,你根本就没有那个窗口。