当从segue回来时,ViewController不会释放

时间:2016-02-20 11:13:14

标签: ios iphone memory uiviewcontroller segue

我正在使用swift以编程方式执行segue。首先,我在故事板中的两个控制器之间创建了一个segue。下面是显示视图控制器的代码:

self.performSegueWithIdentifier("EditImage", sender: imageSampleBuffer)

执行上述代码时,UI上将显示一个新的控制器视图。然后我点击左上角的“后退”按钮。 ui将回到之前的观点。它在这里工作正常。但是,当我用仪器配置我的应用程序时,我发现控制器(由“EditImage”指向segue)未发布。当我单击仪器上的控制器实例时,它显示上面的代码引用了此控制器实例。当我来回执行这两个控制器时,该控制器的实例编号不断增加。我没有为“后退”按钮创建任何动作功能。 All都使用导航控制器的默认逻辑。那么回来后如何释放控制器呢?我应该在回去行动时写下任何代码吗?

2 个答案:

答案 0 :(得分:0)

在未被发布的UIViewController中添加deinit方法并在那里添加断点,你会发现是否有任何其他对象将该引用表保留在外面。任何公共var都可以保留该引用,这就是为什么所有代表都应该有弱引用。 example

答案 1 :(得分:-1)

我确实在我的代码中发现了引用问题。我在viewDidDisappear()方法中清除了该引用,然后它工作正常。但是我不明白为什么乐器没有给我正确的地方拿着我的控制器实例。