2009-12-26 49 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