2009-12-26 41 views
0

尝试设置属性时我收到了NSObject doesNotRecognizeSelector错误,我不知道为什么。Obj-C选择器在属性上未被识别?

错误发生在setWithNSColor的第一行。我很困惑如何合理地合成一个属性可能无法识别。

@interface ScopeColor : NSObject { 
NSString *colorIntegerString; 
float redColor; 
float greenColor; 
float blueColor; 
NSString *name; 
} 

@property (readwrite, assign) NSString *colorIntegerString; 
@property (readwrite, assign) float redColor; 
@property (readwrite, assign) float greenColor; 
@property (readwrite, assign) float blueColor; 
@property (readwrite, assign) NSString *name; 

-(void)setWithNSColor:(NSColor *)inColor 
{ 
    self.redColor=[inColor redComponent]; 
    self.greenColor=[inColor greenComponent]; 
    self.blueColor=[inColor blueComponent]; 
} 

回答

3

你确定它是你的类而不是NSColor引发异常吗?如果NSColor对象不属于NSCalibratedRGBColorSpace或NSDeviceRGBColorSpace,则要求redComponent等将引发异常。

+0

Doh。我相信你是对的。 – wadesworld 2009-12-26 19:52:26

0

你是否在包含的代码之外的地方合成redColor,greenColor和blueColor?此外,原始值(如浮点数)不需要assign关键字。

+0

纠正我,如果我错了,但它是多余的,而不是错误的。分配是默认值。 – wadesworld 2009-12-26 20:09:11

+0

我没有说“错”,我说“不需要”:-)因为它不是一个对象,你不需要指定,它只能被赋值。 – 2009-12-26 20:21:12

+0

我还补充说,最好使用'copy'作为'NSString *'而不是'assign' – Abizern 2009-12-29 15:48:26