iphone - 由于内存压力而终止的应用程序

标签 iphone ios objective-c xcode uiimagepickercontroller

我有一个应用程序可以在连拍模式下拍摄图像,但是一旦拍摄图像并即将预览时,它就会崩溃并且错误显示“由于内存压力而终止应用程序”

当用户按住相机按钮时,我需要拍摄更多图像...离开按钮后,我需要将所有图像显示为幻灯片...我必须做什么?

我的代码是:

- (void)longPress:(UILongPressGestureRecognizer*)gesture {
    if (gesture.state == UIGestureRecognizerStateBegan) {
        [[NSNotificationCenter defaultCenter] addObserver:self
                                                 selector:@selector(takePictures)
                                                     name:AVCaptureSessionDidStartRunningNotification object:nil];
    }
    else if (gesture.state == UIGestureRecognizerStateEnded)
    {
    }


-(void)takePictures
{
    [imagePicker takePicture];
}

帮帮我..

最佳答案

由于图像的高分辨率,将图像存储在 RAM 中的成本很高。更重要的是,您的观察者导致多次调用 takePicture - 太多了。当您使用 imagePicker 拍摄多张照片时,所有这些图像都会快速消耗 RAM,并且由于 iOS 没有交换空间 - 您会耗尽 RAM。 Jetsam/memorystatus 然后启动并终止您的应用程序,因为它消耗了太多内存。

解决方法:

A) 在连拍模式下少拍照片。使用一些全局变量,比如 j,在 takePictures 中递增它,但只在 j % 2 == 0 或 j %3 ==0 上拍摄实际照片(你需要调整该值)

B) 尝试至少将一些照片保存到存储中,然后从 RAM 中释放它们(删除对它们的引用)。

关于iphone - 由于内存压力而终止的应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19219263/

相关文章:

objective-c - NSString 分配/释放/保留

objective-c - 当 UIVIew 隐藏在 SameView 中时如何对 UIview 进行动画处理

iphone - Ios5滑动手势

iphone - 核心数据 - 监视更改并注册本地通知

c# - 单色触摸 : Loading screen

objective-c - 是否可以在 iOS 中 glob 一个目录并让操作系统缓存结果?

ios - 如何使用预构建的二进制文件创建 .ipa 文件?

iphone - 在 UINavigationController 内的 UIViewController 之间切换

ios - iTunes 连接上的 IAD 错误?

ios - IB 中圆形图标的 UIImageView 子类