我一直在制作一个照片编辑应用程序,拍摄照片并将其传递给 下一个视图控制器 当然我使用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之外的任何其他替代。
我已经在这方面工作了好几个星期,这真的不允许我继续前进。 提前谢谢。
答案 0 :(得分:0)
如果您正在使用故事板和ARC,您可以在EditorViewcontroller中创建一个按钮(您将用它返回Viewcontroller)并将其链接到您的EditorViewcontroller.m文件中的以下操作:
- (IBAction)goBack:(UIButton *)sender
{
[self dismissViewControllerAnimated:YES completion:nil];
}
这应该释放EditorViewcontroller
使用的内存