2012-05-19 39 views
0

我有這樣的:怪異的行爲,同時繼承CCSprite

//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

的問題是:爲什麼?

+0

你怎麼收到'arrayOfNodes',你可以確認在真正只包含'Node'對象和沒有'CCSprite'? – Tharabas

+0

我在Game的init方法中創建了一個隨機的節點數組,我檢查過了,ot她的自定義方法工作..只有這不。我試圖重寫我的代碼來解決這個問題 – skytz

回答

0

你可能在你的Nodes數組中插入了一個普通的CCSprite。

0
-(id)init{ 
    wasTouched=NO; 
    } 

這很痛。 :(

你總是要調用父類實現的init方法,你也必須回到這裏自我難道編譯器不要抱怨缺少的返回值建議的字:?不要忽略編譯器警告

。 。

兩個的,這可能導致非常奇怪的行爲,包括崩潰我想這裏的修復:

-(id) init 
{ 
    self = [super init]; 
    if (self) 
    { 
     wasTouched = NO; 
    } 
    return self; 
} 
+0

嗯,我..這顯然不是完整的代碼...無論如何..我做了一個解決方法,它現在似乎是好的 – skytz