由于内存压力终止应用程序

时间:2013-10-07 07:33:50

标签: iphone ios objective-c xcode uiimagepickercontroller

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

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

我的代码是:

- (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];
}

帮帮我......

1 个答案:

答案 0 :(得分:2)

由于图像的高分辨率,将图像存储在RAM中是昂贵的。更重要的是,你的观察者会多次调用takePicture - 太多了。当您使用imagePicker拍摄多张照片时,所有这些图像都会快速消耗RAM,而且由于iOS没有交换 - 因此RAM耗尽。然后Jetsam / memorystatus开始使用并杀死你的应用程序,因为它消耗了大量内存。

围绕这个方法:

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

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