我试图通过从iphone照片库中选择来保存图像。但我无法保存它。我的UIImage对象突然释放。我收到以下错误: * - [UIImage发布]:发送到解除分配的实例0x83fa5b0的消息
请检查下面的代码:
-(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSLog(@"finish picking media");
NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:@"public.image"]){
UIImage *selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage];
NSLog(@"found an image");
selectedImage=[self scaleAndRotateImage:selectedImage];
NSLog(@"image scaled");
//add image to mainpic
imgvwProfile.image = selectedImage;
NSLog(@"11");
//[ setImage:selectedImage forState:UIControlStateNormal];
self.imgPic=selectedImage;
//self.isMainPicImageModified=YES;
NSLog(@"22");
//[self sendImage:selectedImage];
NSLog(@"selectedimage width:%f ht:%f",selectedImage.size.width,selectedImage.size.height);
[self saveImage:selectedImage withImageName:@"profilePic.png"];
NSLog(@"33");
}
}
NSLog(@“11”)时出现错误;已执行。 有人可以帮助我,为什么我会收到这个错误?
由于 的Pankaj
答案 0 :(得分:1)
您可以更改以下行并检查此声明是否有问题。
imgvwProfile.image = selectedImage;
To
imgvwProfile.image = [selectedImage retain];
现在让我知道您的应用程序崩溃与否。
答案 1 :(得分:0)
如果在执行了NSLog(@“11”)之后立即发生错误(你在控制台中看到11对吗?),那么在发布self.imgPic的前UIImage时就会发生错误。要验证这一点,只需将self.imgPic = null;
放在方法的开头即可。
如果是这样,请检查代码以查找imgPic上的前释放调用或指向同一UIImage实例的其他变量。也许在scaleAndRotateImage
或其他方法。