为了将PDF文档加载到PDFView中,我将Quartz.framework添加到了我的项目中。
从那时起,虽然到目前为止我还没有使用它,但我收到了奇怪的错误消息: 找到了名为“州”的多个方法,其中包含不匹配的结果,参数类型或属性
我正在使用来自AppKit.framework / NSCell的状态方法来检查复选框是否打开或关闭:
BOOL replaceCheckBoxFlag = ([sender state] == NSOnState);
作为Quartz.framework一部分的ImageCaptureCore.framework还拥有一个方法 state 。怎么可能让Xcode感到困惑?
我该怎么办?任何提示?
罗纳德
答案 0 :(得分:4)
这种情况正在发生,因为sender
被声明为类型id
,这意味着编译器知道它是一个Objective-C对象,但它不知道它属于哪个类。所以它看起来虽然所有的类定义都找到了两个匹配,但它不知道要使用哪个。
解决方案是投射它或使用正确类型的新变量:
BOOL replaceCheckBoxFlag = ([(NSCell *)sender state] == NSOnState);
或
NSCell *cell = sender;
BOOL replaceCheckBoxFlag = ([cell state] == NSOnState);