exc_bad_access из объекта, возвращенного из NSKeyedUnarchiver - PullRequest
0 голосов
/ 23 октября 2010

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

В контроллере вида я объявляю свой объект так:

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

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

Тогда в .m файле он используется следующим образом:

@synthesize myObject;
@synthesize imageView;

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

Пока все хорошо. Но позже я выбираю новое изображение и пытаюсь установить его в свойстве «image» myObject, и это выдает exc_bad_access

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

Насколько я могу судить из пошагового выполнения кода, это последняя строка, которая вызывает exc_bad_access. Что я делаю неправильно?

1 Ответ

2 голосов
/ 23 октября 2010

Вы должны сохранить myObject:

self.myObject = [NSKeyedUnarchiver unarchiveObjectWithFile:someDataPath];
...