NSViewController未发布

问题描述 投票:2回答:2

我有一个关于Windows与视图控制器的所有权以及它们何时被释放的问题。我创建了一个测试项目,只向NSViewController添加了一行代码:

deinit { print("ViewController Dismissed.") }

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

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

Screenshot from Instruments

swift xcode7 nsviewcontroller
2个回答
0
投票

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.