не удалось сохранить UIImage из фотобиблиотеки iphone

Я пытаюсь сохранить изображение, выбрав его из библиотеки фотографий iphone. Но я не могу его спасти. Мой объект UIImage внезапно отпускает. Я получаю следующую ошибку: * - [UIImage release]: сообщение отправлено в освобожденный экземпляр 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"); был казнен. Может ли кто-нибудь помочь мне, почему я получаю эту ошибку?

Спасибо Панкадж


person pankaj    schedule 23.11.2011    source источник


Ответы (2)


Можете ли вы изменить строку ниже и проверить, создает ли это утверждение проблему или нет.

 imgvwProfile.image = selectedImage;
                To
 imgvwProfile.image = [selectedImage retain];

Дайте мне знать, что ваше приложение вылетает из-за этой функции или нет.

person Deeps    schedule 23.11.2011

Если ошибка возникает сразу после выполнения NSLog (@ "11") (вы видите 11 в консоли, верно?), То это происходит при освобождении прежнего UIImage для self.imgPic. Чтобы убедиться в этом, просто поставьте self.imgPic = null; в начале метода.

Если это так, проверьте свой код на наличие предыдущих вызовов релиза для imgPic или других переменных, указывающих на тот же экземпляр UIImage. Может быть scaleAndRotateImage или другими способами.

person Kay    schedule 23.11.2011