0

多くのデフォルトを処理するクラスがあります。デフォルトを初期化する方法は次のとおりです。

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

次に、デフォルトの色を読み取るための 1 つの方法と、それを設定するための 1 つの方法を利用できるようにします。

- (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 の場合があり、アプリケーション内で問題が発生します。

4

1 に答える 1

0

NSColorWellhttps://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSColorWell_Class/Reference/Reference.htmlNSControlよると、誤って代わりにインスタンスで呼び出しているようです.setColor:NSColorWellNSColor

于 2012-12-19T17:53:13.127 に答える