加载Quartz.framework Objective-C后出现奇怪的错误

时间:2012-11-24 04:58:25

标签: objective-c duplicates state quartz-graphics appkit

为了将PDF文档加载到PDFView中,我将Quartz.framework添加到了我的项目中。

从那时起,虽然到目前为止我还没有使用它,但我收到了奇怪的错误消息: 找到了名为“州”的多个方法,其中包含不匹配的结果,参数类型或属性

我正在使用来自AppKit.framework / NSCell的状态方法来检查复选框是否打开或关闭:

BOOL replaceCheckBoxFlag = ([sender state] == NSOnState);

作为Quartz.framework一部分的ImageCaptureCore.framework还拥有一个方法 state 。怎么可能让Xcode感到困惑?

我该怎么办?任何提示?

罗纳德

1 个答案:

答案 0 :(得分:4)

这种情况正在发生,因为sender被声明为类型id,这意味着编译器知道它是一个Objective-C对象,但它不知道它属于哪个类。所以它看起来虽然所有的类定义都找到了两个匹配,但它不知道要使用哪个。

解决方案是投射它或使用正确类型的新变量:

BOOL replaceCheckBoxFlag = ([(NSCell *)sender state] == NSOnState);

NSCell *cell = sender;
BOOL replaceCheckBoxFlag = ([cell state] == NSOnState);