2009-06-10 58 views

回答

4

这个警告通常意味着你的签名可能是不同的,或者你没有申报你的方法的原型。

例如,你可能已经做了这样的事情:

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

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

你怎么看签名不匹配?通常,这是我收到警告时的问题。尽管你可能已经忽略了原型,但也导致了相同的问题。 Objective-c将接受你传递给对象的任何消息,即使它在技术上没有被你指定。

+0

好吧,你是对的原型是不同的,但如果我改变原型,它将不再起作用,因为它很重要。您可能需要查看代码(http://fwdr.org/h8xf)以查看是否有其他方法来解决问题或需要更改的其他方法。 – Joshua 2009-06-10 18:03:39

+0

也许你没有把正确的参数传递给你的函数?一旦我可以看到你的-objectArray方法对那个类的签名,我想我会更好理解。它可能需要一个参数或者你没有通过的东西。 – Sam 2009-06-10 18:12:42

2

从您的代码看来,您正在访问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 
}