Je rencontre des difficultés pour charger à partir de données enregistrées une instance d'une classe personnalisée conforme au protocole NSCoding. Ma classe a une propriété UIImage et quand je lui assigne une nouvelle UIImage, le programme se bloque avec un exc_bad_access.exc_bad_access à partir de l'objet retourné par NSKeyedUnarchiver
Dans le contrôleur de vue je déclare mon objet comme ceci:
@interface SomeViewController : UIViewController {
IBOutlet UIImageView *imageView;
SomeClass *myObject;
}
@property (nonatomic, retain) SomeClass *myObject;
@property (nonatomic, retain) IBOutlet UIImageView *imageView;
Puis dans le fichier .m il est utilisé comme suit:
@synthesize myObject;
@synthesize imageView;
-(void)viewDidLoad{
myObject = [NSKeyedUnarchiver unarchiveObjectWithFile:someDataPath];
imageView.image = myObject.image;
}
Jusqu'à présent, si bon. Mais plus tard, je prends une nouvelle image et d'essayer de le mettre à la propriété « image » de myObject, et cela jette 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;
}
Pour autant que je peux dire de simple pas à pas dans le code, il est le dernière ligne qui provoque l'exc_bad_access. Qu'est-ce que je fais mal?
Pourquoi vous définissez myObject dans la didFinishPickingMediaWithInfo: méthode? –