NSColor иногда мутирует в NSColorWell

У меня есть класс, который обрабатывает множество значений по умолчанию, вот как я инициализирую значения по умолчанию:

+ (void) initialize
{
    NSUserDefaults* defaults=[NSUserDefaults standardUserDefaults];
    NSData* colorData= [NSKeyedArchiver archivedDataWithRootObject: [NSColor orangeColor]];
    NSDictionary* def= @{ @"colorKey" : colorData, ... };
    [defaults registerDefaults: def];
}

Затем я делаю доступным один метод для чтения цвета по умолчанию и один метод для его установки:

- (NSColor*) color
{
    NSUserDefaults* defaults=[NSUserDefaults standardUserDefaults];
    NSData* colorData= [defaults objectForKey: colorKey];
    return [NSKeyedUnarchiver unarchiveObjectWithData: colorData];
}

- (void) setColor: (NSColor*) color
{
    NSUserDefaults* defaults=[NSUserDefaults standardUserDefaults];
    NSData* colorData= [NSKeyedArchiver archivedDataWithRootObject: color];
    [defaults setObject:colorData forKey: colorKey];
}

Но если внутри метода color: я печатаю цвет, иногда это класс NSColorWell, и это создает проблемы внутри приложения.


person Ramy Al Zuhouri    schedule 19.12.2012    source источник


Ответы (1)


NSColorWell – это NSControl согласно https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSColorWell_Class/Reference/Reference.html, поэтому похоже, что вы ошибочно вызываете setColor: с экземпляром NSColorWell вместо NSColor.

person tia    schedule 19.12.2012