我正在开发一个处理高清照片的应用程序。我正在使用 AVCaptureSession 拍照,停止它,然后对该照片应用效果。
让我疯狂的是,一切都运行良好,仪器告诉我,我正确且按时地释放了我使用的所有内存。是的,它确实很高,有时达到 100mb。但它下降得很快。
然后我重新启动捕获会话,并收到内存警告。绝对没有理由这样做;_;如果释放我使用的所有内存...那么下次我重新启动捕获会话时应用程序就会崩溃。没有消息,没有日志,什么都没有。
我不知道如何解决这个问题,我不知道在哪里寻找...如果有人可以帮助我一点,我会很高兴!
提前致谢!
我也有过同样的挫败感。我在一个项目中使用 ARC,其中我展示了使用 AV Foundation 的相机。呈现并弹出视图控制器几次后,我的应用程序将收到内存不足警告,然后崩溃。仪器也没有多大帮助。我通过实验发现了解决方案:
即使您在相机类中使用 ARC,您也可以实现 dealloc 方法(只是不要调用super
在解除分配上)。
- (void)dealloc {
AVCaptureInput* input = [session.inputs objectAtIndex:0];
[session removeInput:input];
AVCaptureVideoDataOutput* output = [session.outputs objectAtIndex:0];
[session removeOutput:output];
[session stopRunning];
}
这负责停止 AVCaptureSession 并确保它没有仍然存在的输入或输出。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)