gpt4 book ai didi

objective-c - 为什么 cocoa 绑定(bind)不能与框架类的 typedef 一起使用

转载 作者:行者123 更新时间:2023-12-03 16:36:24 25 4
gpt4 key购买 nike

为什么在尝试将 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com