ОК, поэтому у меня есть код с объектом класса, называемым «игра». Каждый кадр (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]]];
Хорошо, что на самом деле странно ... Хм я не думаю, что я делаю, извиняюсь за то, что ты ноб - что ты имеешь в виду, переназначая, чтобы указать на другое место? Благодаря! –
Существует несколько способов получить такую ошибку. Один из способов заключается в том, чтобы сделать что-то вроде этого: 'game ='. Другой способ (и, скорее всего, с учетом вашего последнего обновления) заключается в том, что игровой объект был выпущен, а в ячейке памяти, которая использовалась для хранения вашего игрового объекта, теперь есть что-то еще. –
jjwchoy
Инструмент инструментов в xcode действительно полезен для отладки такого рода вещей. Если вы можете запустить его в симуляторе, попробуйте запустить его с помощью инструмента Zombies. Этот инструмент скажет вам, когда вы отправляете сообщение на объект, который был выпущен, и он покажет вам все allocs/сохраняет/релизы/автореализаторы, чтобы помочь вам найти, где вы перевыпускали (или не сохраняли) – jjwchoy