2009-06-10 87 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 
}