У меня есть 3 метода, один из которых получает цвет и сохраняет его как объект данных в пользовательских значениях по умолчанию, второй рисует прямоугольник и заполняет его цветом, сохраненным в пользовательских значениях по умолчанию, и один метод инициализирует и экземпляр NSColor цветом сохраняется в пользовательских настройках по умолчанию при запуске приложения.
Ниже приведены 3 метода, однако проблема в том, что я получаю эту ошибку при сборке и запуске приложения, может кто-нибудь понять, почему я получаю эту ошибку и что не так с моим кодом.
Program received signal: “EXC_BAD_ACCESS”.
- (void)setColor:(NSColor *)color
{
_color = [color copy];
NSData *data = [NSArchiver archivedDataWithRootObject:_color];
[[NSUserDefaults standardUserDefaults] setObject:data forKey:@"MyColor"];
[self setNeedsDisplay:YES];
}
- (void)drawRect:(NSRect)rect
{
NSRect rect1 = NSInsetRect([self bounds], 4.0, 4.0);
NSBezierPath * path;
[_color set];
path = [NSBezierPath bezierPathWithRoundedRect:rect1
xRadius:6.0
yRadius:6.0];
[path fill];
}
- (id)initWithFrame:(NSRect)frame
{
self = [super initWithFrame:frame];
if (self == nil)
return nil;
_color = [NSColor blackColor];
NSData *data = [[NSUserDefaults standardUserDefaults] objectForKey:@"MyColor"];
if (data != nil){
NSColor *color1 = [NSUnarchiver unarchiveObjectWithData:data];
_color = color1;}
return self;
}