保存されたデータから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;
}
ここまでは順調ですね。しかし、後で新しい画像を選択して、それをmyObjectの「image」プロパティに設定しようとすると、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を引き起こしているのは最後の行です。私は何が間違っているのですか?