为什么在尝试将 NSColorWell 值绑定(bind)到某些属性时出现错误...
valueForUndefinedKey: this class is not key value coding-compliant for the key color.
如果颜色属性定义为:
@property (strong, nonatomic) MyColor *color;
和MyColor定义为:
typedef NSColor MyColor;
但是当 color 属性定义为 NSColor 时一切正常?
最佳答案
您似乎发现了一个错误,因为 typedef
应该是透明的并且不会改变行为。
测试表明:
typedef AnyOldClass SomeOldClass;
以及不同类中的属性:
@property AnyOldClass *anyclass; // from class A
@property SomeOldClass *someclass; // from class B
然后尝试使用 bind:toObject:withKeyPath:options:
绑定(bind)失败。如果 typedef 用于值类型(例如 double
),它似乎确实有效(即非详尽测试)。
此外,如果更改为:可以工作:
typedef AnyOldClass *SomeOldClass;
和
@property SomeOldClass someclass; // from class B
即 typedef 用于指针类型本身。然而,不是强调可以,它在编译之间似乎不一致 - 如果它适用于二进制文件,它总是适用于该二进制文件,但重新编译可能会破坏它。
我还没有检查元数据(至少还没有......)
奇怪又有趣。向 Apple 报告此事,除非很快有人介入并作出解释。
在 Xcode 5.0.2/Clang 4.2 上完成测试
关于objective-c - 为什么 cocoa 绑定(bind)不能与框架类的 typedef 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22075472/