我得到關於我的代碼的一部分的錯誤/警告說'沒有匹配方法簽名的消息將被假定返回'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