我得到关于我的代码的一部分的错误/警告说'没有匹配方法签名的消息将被假定返回'id'并接受'...'作为参数。)' 我不明白为什么我得到这个错误,所以我在寻找一些帮助,下面是一个链接到实现文件中的代码部分。方法签名问题
以下是错误。
alt text http://snapplr.com/snap/qw1r
谢谢:)
我得到关于我的代码的一部分的错误/警告说'没有匹配方法签名的消息将被假定返回'id'并接受'...'作为参数。)' 我不明白为什么我得到这个错误,所以我在寻找一些帮助,下面是一个链接到实现文件中的代码部分。方法签名问题
以下是错误。
alt text http://snapplr.com/snap/qw1r
谢谢:)
这个警告通常意味着你的签名可能是不同的,或者你没有申报你的方法的原型。
例如,你可能已经做了这样的事情:
// Prototype
-(void) foo:(float)bar;
// Calling the function
int blargh = 3;
[myClass bar:blargh];
你怎么看签名不匹配?通常,这是我收到警告时的问题。尽管你可能已经忽略了原型,但也导致了相同的问题。 Objective-c将接受你传递给对象的任何消息,即使它在技术上没有被你指定。
从您的代码看来,您正在访问self
的objectArray 属性。你有.h文件中定义的那个吗?
@interface DragController : UIViewController
{
NSArray* objectArray;
}
@property (nonatomic, retain) NSArray* objectArray;
如果@property
不存在,那么你的类不以[self objectArray]
回应。如果您需要其他对象来访问它,您只需要该属性。如果你只是想访问实例变量,你可以简单地使用objectArray
,所以用[objectArray indexOfObject...
代替[[self objectArray] indexOfObject...
,警告应该消失。如果objectArray真的是一种方法,它应该看起来像这样在你的.h文件中,该{ instance variables }
节之后:
-(NSArray*)objectArray;
而在.m文件:
-(NSArray*)objectArray
{
// return the array here
}
好吧,你是对的原型是不同的,但如果我改变原型,它将不再起作用,因为它很重要。您可能需要查看代码(http://fwdr.org/h8xf)以查看是否有其他方法来解决问题或需要更改的其他方法。 – Joshua 2009-06-10 18:03:39
也许你没有把正确的参数传递给你的函数?一旦我可以看到你的-objectArray方法对那个类的签名,我想我会更好理解。它可能需要一个参数或者你没有通过的东西。 – Sam 2009-06-10 18:12:42