iPhone UIImageView带摄像头或摄像头捡拾器内存警告级别2

时间:2010-08-17 15:07:09

标签: iphone xcode uiimageview camera picker

我很接近终于完成了第一个放入商店的应用程序。一切正常,内存泄漏几乎完全不存在......除非我使用相机或从相机胶卷中选择图像。

如果用户选择相机与滚动....相机工作正常...拍照,然后当他们选择“使用”时,它会崩溃。相机胶卷也一样。我是一个菜鸟,所以如果我搞砸了什么,我不会感到惊讶。任何帮助/建议非常感谢...这是代码:

    -(IBAction) getPhoto:(id) sender {
    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;

    if((UIButton *) sender == choosePhoto) {
        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    } else {
        picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    }

    [self presentModalViewController:picker animated:YES];
    //[picker release];
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
    [picker dismissModalViewControllerAnimated:YES];
    theimageView.image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
    [picker release];
}

3 个答案:

答案 0 :(得分:0)

唯一突出我的问题是UIImagePickerControllerOriginalImageNSString常量,所以你不想把它放在引号中:

theimageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];

但即使该行失败,也只会将theimageView.image设置为nil,这可能不会导致崩溃。您应该在Xcode控制台中看到至少一些有关崩溃的信息,这将有所帮助。另外,请查看this SO answer中的提示。

答案 1 :(得分:0)

您的问题可能是,因为您使用的是原始图像,因为它类似于1400x750(不确定确切尺寸),当您将其设置为要显示的imageview图像时,可能会耗尽内存...您可能应该将图像调整为320x480或480x320以在图像视图中显示它,这可能会解决您的问题。

答案 2 :(得分:0)

更改
[picker dismissModalViewControllerAnimated:YES];

[self dismissModalViewControllerAnimated:YES];
这应该工作