行,所以我有所謂的「遊戲」一類對象的代碼。每幀(60 FPS)我用獲取字符串的函數更新該對象。在運行遊戲5秒之後,我收到了發送到實例錯誤的無法識別的選擇器。發送到實例的無法識別的選擇器 - 爲什麼?
更新:
[game updatePlayersAndMonsters:@"0" monsters:@"0"];
功能:
-(void)updatePlayersAndMonsters:(NSString*)players monsters:(NSString*)monsters {
CCLOG(@"%@.%@", players, monsters);
}
我不明白這是怎麼回事。 錯誤:
2011-07-03 12:13:19.175 app[65708:207] -[NSCFString updatePlayersAndMonsters:monsters:]: unrecognized selector sent to instance 0xc4e95b0
2011-07-03 12:13:19.176 app[65708:207] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSCFString updatePlayersAndMonsters:monsters:]: unrecognized selector sent to instance 0xc4e95b0'
我該怎麼辦?謝謝。如果你需要其他任何細節,也可以使用IDK,所以如果我忘記了一些東西,就寫下來,我只是沒有想法。
UPDATE: GMAE是類GameNode的對象:
+(id) GmameNodeWithMapID:(int)MapID_ scene:(SomeScene*)MainScene_ players:(NSString*)Cplayers_ monsters:(NSString*)Cmonsters_ monsterCount:(NSString*)monsterCount_
{
return [[[self alloc] GmameNodeWithMapID:MapID_ scene:MainScene_ players:Cplayers_ monsters:Cmonsters_ monsterCount:monsterCount_] autorelease];
}
-(id) GmameNodeWithMapID:(int)MapID scene:(SomeScene*)MainScene players:(NSString*)Cplayers monsters:(NSString*)Cmonsters monsterCount:(NSString*)monsterCount
{
if((self=[super init])) {
我與創建它:
game = [GameNode GmameNodeWithMapID:ChoosenMapID scene:self players:Thing[5] monsters:Thing[6] monsterCount:Thing[4]];
UPDATE 2
我創建SomeScene:
+(id) scene {
CCScene *s = [CCScene node];
id node = [SomeScene node];
[s addChild:node];
return s;
}
-(id) init {
if((self=[super init])) {
我使用它:
[[CCDirector sharedDirector] replaceScene: [CCTransitionRadialCW transitionWithDuration:1.0f scene:[LoginScene scene]]];
確定這確實很奇怪......嗯,我不認爲我確實,對於做noob很抱歉 - 你指的是指向其他地方的意思是什麼?謝謝! –
有幾種方法可以獲得這種錯誤。其中一種方式是不加思索地做這樣的事情:'game = <某個其他對象>'。另一種方式(也許更可能是最新的更新),遊戲對象被釋放,並且用於包含遊戲對象的內存位置現在包含其他內容。 – jjwchoy
xcode中的工具工具對調試這類事情非常有幫助。如果你可以在模擬器中運行它,然後嘗試使用殭屍工具運行它。此工具會告訴您何時向已發佈的對象發送消息,並且會向您顯示所有的分配/保留/發佈/自動發佈,以幫助您找到過度發佈(或保留不足)的地方 – jjwchoy