14

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

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

UIImagePicker 会占用那么多内存吗?我什至还没有处理或显示它所需要的图像。即使我把图像扔掉,我也会收到内存警告。

任何帮助表示赞赏。

4

3 回答 3

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];
}
于 2011-05-05T20:15:51.073 回答
9

是的,这会发生。要记住的是,收到内存警告是可以的,这并不意味着您是一个坏人,您只需要确保您的应用程序不会崩溃或因响应内存警告而感到困惑。

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

于 2009-12-02T17:26:42.987 回答
1

很可能您使用的是未经编辑的图像,并且它们以 1400x1300 的完整尺寸返回,这是巨大的并且会使您的应用程序崩溃,我建议将图片大小调整为 iphone 本机 320x480 分辨率,应该可以解决您的问题

于 2009-12-02T16:35:34.280 回答