在解除视图控制器后,不会调用OSX deinit

时间:2017-05-08 11:03:57

标签: swift macos memory-leaks deinit

在“deinit”方法中没有遇到断点的话题。解决方案是将可执行代码放入其中。试过 - 没用。

从第一个窗口发起ViewController的代码:

    let vc = self.storyboard?.instantiateController(withIdentifier: "testwindow") as! NSViewController
    self.presentViewControllerAsModalWindow(vc)

它打开一个新窗口,其中包含一个按钮,单击

调用以下代码
    dismissViewController(self)

这是带断点的deinit代码。

deinit code

方案中未启用僵尸对象。

如果再次出现弹出窗口时重新使用了viewcontroller,那么这不会有问题,但每次都会创建视图控制器的新实例。

有什么可以确保对象被破坏吗?

1 个答案:

答案 0 :(得分:1)

Apple关于解除使用presentViewControllerAsModalWindow()状态的控制器的文档"要关闭模态窗口,请在self(显示视图控制器)上调用dismissViewController(_ :)方法。 #34 ;.因此,您可能会从呈现的控制器本身中解除所呈现的控制器。从呈现视图控制器调用dismiss将有所帮助。