我无法从保存的数据加载符合 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 的“图像”属性,这会引发 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 的最后一行。我究竟做错了什么?