EXC_BAD_ACCESS dall'oggetto restituito dal NSKeyedUnarchiver
-
25-09-2019 - |
Domanda
Ho dei problemi a carico da dati salvati un'istanza di una classe personalizzata che conforme al protocollo NSCoding. La mia classe ha una proprietà UIImage e quando assegno un nuovo UIImage ad essa il programma si blocca con un'EXC_BAD_ACCESS.
Nel controller della vista dichiaro il mio oggetto in questo modo:
@interface SomeViewController : UIViewController {
IBOutlet UIImageView *imageView;
SomeClass *myObject;
}
@property (nonatomic, retain) SomeClass *myObject;
@property (nonatomic, retain) IBOutlet UIImageView *imageView;
Poi nel file .m è usato come segue:
@synthesize myObject;
@synthesize imageView;
-(void)viewDidLoad{
myObject = [NSKeyedUnarchiver unarchiveObjectWithFile:someDataPath];
imageView.image = myObject.image;
}
Fin qui tutto bene. Ma più tardi prendo una nuova immagine e cercare di impostare il "immagine" di proprietà di myObject, e questo genera un EXC_BAD_ACCESS
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
[picker dismissModalViewControllerAnimated:YES];
UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"];
[imageView setImage:image];
myObject.image = image;
}
Per quanto mi riguarda posso dire da single-stepping attraverso il codice, è l'ultima riga che sta causando l'EXC_BAD_ACCESS. Che cosa sto facendo di sbagliato?
Soluzione
È necessario mantenere myObject:
self.myObject = [NSKeyedUnarchiver unarchiveObjectWithFile:someDataPath];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow