0

我正在使用故事板,但偶然发现了一些我无法掌握的东西。

我正在以编程方式设置我的视图控制器performSegueWithIdentifier:

它就像一个魅力,但我注意到每次我这样做时,我都会创建该 viewController 的一个新实例,因此,我有不断堆积的内存。当我模拟内存警告时,我看到每次我打电话performSegueWithIdentifier:

我有一个视图控制器的新实例,它永远不会被释放。所以内存只是堆积起来,我无法释放它,最终导致崩溃。

我只是像这样进入视图控制器:

// If sales are registered, go to view
[self performSegueWithIdentifier:@"previousSaleSegue" sender:self];

我在这里想念什么?

4

2 回答 2

1

您将视图控制器堆叠在一起,而不是返回到前一个。假设您使用的是导航控制器,您将这样做:

A --push--> B --finished! Push---> New A ---Push---> B ---Finished! push--->A ...

你应该做的是:

A --push--> B --finished! Pop -
^-----------------------------/

您正在通过评论使用模态序列,在这种情况下,您需要向返回按钮添加一个操作以关闭视图控制器(返回到前一个)而不是呈现另一个实例。原理是一样的。你会用

[self dismissViewControllerAnimated:YES completion:nil];
于 2013-04-12T08:55:17.143 回答
0

如果您确定 viewcontroller 实例没有被释放,那一定是因为您在某处保持对它的引用(它可能是控制器本身的一个循环)。

于 2013-04-12T08:07:20.960 回答