0

保存されたデータから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を引き起こしているのは最後の行です。私は何が間違っているのですか?

4

1 に答える 1

2

myObjectを保持する必要があります。

self.myObject = [NSKeyedUnarchiver unarchiveObjectWithFile:someDataPath];
于 2010-10-22T21:10:28.890 に答える