使用模态segue时,清除以前ViewControllers的内存?

时间:2014-07-22 13:34:32

标签: xcode memory view segue nsdata

我一直在制作一个照片编辑应用程序,拍摄照片并将其传递给 下一个视图控制器 当然我使用AVSession来显示相机预览。 拍摄照片时,当前视图控制器将图像传递给具有所有编辑功能的视图控制器。 我使用模态segues来控制视图之间的转换。 问题是,当segue发生时,内存会增加4mb,永远不会被释放。

Viewcontoller - > EditorViewcontoller

EdiorViewcontroller - >的viewController

我也有一个从编辑器到相机的segue,再次有一个内存的积累。 来回几次,应用程序崩溃。

由于缺乏声誉,我无法发布图片。

如何清理前一个Viewcontroller的内存,只是让当前的视图控制器运行。

我尝试过的事情

*将所有实例设置为nil。 *解雇视图控制器。 *将整个视图控制器设置为nil。 *描述它。 *使用@autorealease。 *在互联网上花了几个小时寻找解决方案。

我使用这行代码来执行segue。

    [self performSegueWithIdentifier:@"effectsegue" sender:self];

我甚至尝试过弱自我,希望它有所帮助。

     __weak ViewController *weakself=self;

    [weakself performSegueWithIdentifier:@"effectsegue" sender:self];

当我描述它时,它告诉我这些代码行

   NSData *jpegData = [AVCaptureStillImageOutput jpegStillImageNSDataRepresentation:imageDataSampleBuffer];

   [self performSegueWithIdentifier:@"effectsegue" sender:self];

正在记忆中。

我想知道一些建议和想法,可以做些什么来清除以前的视图控制器和空闲内存的记忆,除segue之外的任何其他替代。

我已经在这方面工作了好几个星期,这真的不允许我继续前进。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

如果您正在使用故事板和ARC,您可以在EditorViewcontroller中创建一个按钮(您将用它返回Viewcontroller)并将其链接到您的EditorViewcontroller.m文件中的以下操作:

- (IBAction)goBack:(UIButton *)sender
{
    [self dismissViewControllerAnimated:YES completion:nil];
} 

这应该释放EditorViewcontroller

使用的内存