Pregunta

Estoy teniendo problemas para cargar los datos guardados de una instancia de una clase personalizada que cumpla con el protocolo NSCoding. Mi clase tiene una propiedad UIImage y cuando le asigno un nuevo UIImage a que el programa se bloquea con un EXC_BAD_ACCESS.

En el controlador de vista I declarar mi objeto de esta manera:

@interface SomeViewController : UIViewController  {
    IBOutlet UIImageView *imageView;
    SomeClass *myObject;
 }

@property (nonatomic, retain) SomeClass *myObject;
@property (nonatomic, retain) IBOutlet UIImageView *imageView;

A continuación, en el archivo .m se utiliza de la siguiente manera:

@synthesize myObject;
@synthesize imageView;

-(void)viewDidLoad{
  myObject = [NSKeyedUnarchiver unarchiveObjectWithFile:someDataPath];
  imageView.image = myObject.image;
}

Hasta aquí todo bien. Pero más tarde tomo una nueva imagen y tratar de ponerlo en la propiedad "imagen" de myObject, y esto arroja una EXC_BAD_ACCESS

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

Por lo que yo puedo decir de un solo paso a paso a través del código, es la última línea que está causando el EXC_BAD_ACCESS. ¿Qué estoy haciendo mal?

¿Fue útil?

Solución

Hay que mantener myObject:

self.myObject = [NSKeyedUnarchiver unarchiveObjectWithFile:someDataPath];
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top