使用UIImagePicker一次后的内存警告

时间:2009-12-02 16:33:25

标签: iphone memory camera uiimagepickercontroller

我已经提到了这个非常好的参考:https://stackoverflow.com/questions/1282830/uiimagepickercontroller-uiimage-memory-and-more但我遇到了一些非常严重的问题。我拍照后,收到内存警告。这是我拍的第一张照片,而不是第二张或第三张。

我想知道是不是因为我从应用程序目录中加载了几个小jpeg到滚动视图中。我能想到的唯一解决方案是在UIImagePicker处于活动状态时卸载主视图中的所有内容,然后重新加载所有内容,但我不确定这是正确的解决方案,我不知道该怎么做。

UIImagePicker会使用那个多少内存吗?我甚至没有处理或显示它所需的图像。即使我把图像扔掉,我也会得到记忆警告。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:45)

对于仍然在寻找实际答案的所有人而不是模糊的陈述,请看这里。我注意到有数百个答案,如“处理你的记忆”,但没有回答任何问题。希望这有助于其他人...

更改以下内容

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    [imageView setImage:image];
    [self dismissModalViewControllerAnimated:YES];
}

以下内容使您的模态视图在设置图像之前解除...

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage];
    [self dismissModalViewControllerAnimated:YES];
    [imageView setImage:image];
}

答案 1 :(得分:9)

是的,这种情况发生了。要记住的是,获得内存警告是可以的,这并不意味着你是一个坏人,你只需要确保你的应用程序不会崩溃或混淆以响应内存警告。 / p>

特别是,您需要了解UIViewController的默认操作是在视图不可见时卸载它们,如果全屏图像选择器显示,它们将不可见。

答案 2 :(得分:1)

很可能你正在使用未经编辑的图像,并且它们以1400x1300的完整大小回来,这是巨大的并且会使你的应用程序崩溃,我建议将图片大小调整为iPhone原生320x480分辨率,应该解决你的问题