4

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

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

我的代码是:

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

帮我..

4

1 回答 1

2

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

解决方法:

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

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

于 2013-10-31T21:01:56.243 回答