2

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

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

我正在使用来自 AppKit.framework/NSCell的state方法来检查复选框是打开还是关闭,如下所示:

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

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

我能做些什么?有什么提示吗?

罗纳德

4

1 回答 1

4

发生这种情况是因为sender被声明为 type id,这意味着编译器知道它是一个 Objective-C 对象,但它不知道它属于哪个类。因此,它查看了所有类定义并找到了两个匹配项,但它不知道要使用哪一个。

解决方案是强制转换或使用正确类型的新变量:

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

或者

NSCell *cell = sender;
BOOL replaceCheckBoxFlag = ([cell state] == NSOnState);
于 2012-11-24T05:03:06.040 回答