0

我有这个:

//Node.h

 @interface Node: CCSprite{
 BOOL wasTouched;
 }
 -(BOOL)getTouched;
 // some other methods

 //Node.m

 -(BOOL)getTouched{
 return wasTouched;
 }

-(id)init{
    wasTouched=NO;
    }

//wasTouched changes in the other methods..when they are called (no problem here)


//Game.m

//i make an array of nodes and do some stuff

-(void)someMethod{
    for (Node *node in arrayOfNodes){
    if ([node getTouched]) {  //here it crashes
    //code
    }}}

它与消息一起崩溃-[CCSprite getTouched]: unrecognized selector sent to instance 0x236dd0

问题是:为什么?!

4

2 回答 2

0

您可能在 Nodes 数组中插入了一个普通的 CCSprite。

于 2012-05-20T11:01:15.633 回答
0
-(id)init{
    wasTouched=NO;
    }

这很伤人。:(

您总是必须调用 init 方法的超级实现。您还必须在这里返回自我。编译器没有抱怨缺少返回值吗?忠告:不要忽略编译器警告。

这两者都可能导致非常奇怪的行为,包括我猜的崩溃。这是修复:

-(id) init
{
    self = [super init];
    if (self)
    {
        wasTouched = NO;
    }
    return self;
}
于 2012-05-21T09:07:01.107 回答