2014-02-27 28 views
2

爲什麼有錯誤,試圖NSColorWell值綁定到一些財產......爲什麼可可綁定不會用typedef框架類的工作

valueForUndefinedKey: this class is not key value coding-compliant for the key color. 

如果顏色屬性被定義爲當:

@property (strong, nonatomic) MyColor *color; 

MyColor定義爲:

typedef NSColor MyColor; 

但是,當顏色屬性被定義爲NSColor時,一切正常?

回答

2

您似乎發現了一個錯誤,因爲typedef應該是透明的並且不會改變行爲。

測試表明,用:

typedef AnyOldClass SomeOldClass; 
在不同的班級

和屬性:

@property AnyOldClass *anyclass; // from class A 

@property SomeOldClass *someclass; // from class B 

然後試圖綁定與bind:toObject:withKeyPath:options:失敗。如果typedef用於值類型(例如double),它看起來可以工作(即非窮舉測試)。

此外,它可以工作如果它被改變爲:

typedef AnyOldClass *SomeOldClass; 

@property SomeOldClass someclass; // from class B 

即typedef的是指針類型本身。然而,的重點不是,編譯時似乎並不一致 - 如果它適用於二進制文件,它總是適用於該二進制文件,但重新編譯可能會破壞它。

我沒有檢查元數據(至少現在還不是...)

怪異而有趣。向蘋果報告,除非有人馬上跳出解釋。

在Xcode 5.0.2/Clang上完成的測試4.2

相關問題