簡體   English   中英

由於未捕獲的異常'NSInvalidArgumentException而終止應用程序

[英]Terminating app due to uncaught exception 'NSInvalidArgumentException

好的,這是一個有趣的事件...我收到警告: Characters may not respond to 'addHeroType:atX:atY:fromMobTable'

雖然據我所知,我已經正確定義了功能,但是另一雙眼睛呢?

這是Characters.h的定義

-(void) addHeroType:(int)newMobType atX:(int)x atY:(int)y fromMobTable:(Mobdefs*)newMobTable;

這是Characters.m的函數

-(void) addHeroType:(int)newMobType atX:(int)x atY:(int)y fromMobTable:(Mobdefs*)newMobTable

這里是我在另一個類調用heroFactory(進行調用Characters.h包括在heroFactory):

[Characters addHeroType:1 atX:location.x atY:location.y fromMobTable:newMobTable];

但是此行導致應用程序由於未捕獲的異常而終止-檢查調試器,我看到“ NSObject無法識別選擇器”

我確信,問題出在為什么我看到一個警告,即即使Character類與定義完全匹配,它也可能無法響應編寫的函數調用,這令人感到困惑。

任何幫助,不勝感激。

-(void) addHeroType:(int)newMobType atX:(int)x atY:(int)y fromMobTable:(Mobdefs*) newMobTable

聲明為實例方法。

[Characters addHeroType:1 atX:location.x atY:location.y fromMobTable:newMobTable];

但是您在類上將其作為類方法調用。

因此,要么將方法聲明為類方法

+(void) addHeroType:(int)newMobType atX:(int)x atY:(int)y fromMobTable:(Mobdefs*) newMobTable

或在實例上調用

Characters *instance = [[[Characters alloc] init] autorelease];
[instance addHeroType:1 atX:location.x atY:location.y fromMobTable:newMobTable];

當然,取決於您的方法要求的范圍。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM