方法签名问题

时间:2009-06-10 17:49:29

标签: objective-c cocoa

我收到错误/警告,我的部分代码说'没有匹配方法签名的消息将被假定为返回'id'并接受'...'作为参数。)' 我不明白为什么我收到这个错误,所以我正在寻找一些帮助,下面是实现文件中代码部分的链接。

http://fwdr.org/h8xf

这是错误。

alt text http://snapplr.com/snap/qw1r

谢谢:)

2 个答案:

答案 0 :(得分:4)

此警告通常表示您的签名可能不同,或者您尚未声明方法的原型。

例如,你可能做过这样的事情:

// Prototype
-(void) foo:(float)bar;

// Calling the function
int blargh = 3;
[myClass bar:blargh];

您是否看到签名不匹配?通常,当我收到警告时,这就是问题所在。虽然你可能完全忽略了它的原型,但这会导致同样的问题。 Objective-c将接受您传递给对象的任何消息,即使技术上未指定您也是如此。

答案 1 :(得分:2)

从您的代码中,您似乎正在访问self的objectArray 属性。你有.h文件中定义的那个吗?

@interface DragController : UIViewController
{
    NSArray* objectArray;
}
@property (nonatomic, retain) NSArray* objectArray;

如果@property不存在,那么您的课程不会回复[self objectArray]。如果需要其他对象来访问它,则只需要该属性。如果您只想访问实例变量,则可以单独使用objectArray,因此只需将[[self objectArray] indexOfObject...替换为[objectArray indexOfObject...,警告就会消失。如果objectArray确实是一个方法,它应该在你的.h文件中,在{ instance variables }部分之后显示为:

-(NSArray*)objectArray;

在.m文件中:

-(NSArray*)objectArray
{
    // return the array here
}