我在我的場景這兩種方法:CCLabelBMFont在未通知的情況下崩潰?
-(void)damageText:(NSString*)text atPosition:(CGPoint)position {
CCLabelBMFont *label = [CCLabelBMFont labelWithString:text fntFile:@"Font2.fnt"];
label.position = position;
[self addChild:label z:50];
label.scale = 0.01;
[label runAction:[CCSequence actions:[CCScaleTo actionWithDuration:0.08 scale:1.0],
[CCDelayTime actionWithDuration:0.2],[CCFadeOut actionWithDuration:0.8],
[CCCallFuncN actionWithTarget:self selector:@selector(killLabel:)],nil]];
label.opacity = 0;
[label runAction:[CCFadeIn actionWithDuration:0.04]];
}
-(void)killLabel:(id)sender {
CCLabelBMFont *label = (CCLabelBMFont*)sender;
[self removeChild:label cleanup:YES];
}
因此,首先,我用的是damageText方法,和我的留言好嗎彈出。然後它淡出並從場景中移除。
但我第二次做到這一點,它崩潰,與EXC_BAD_ACCESS消息說
*終止應用程序由於未捕獲的異常「NSInternalInconsistencyException」,理由是:「TextureCache:fileimage絕不能nill」
但我不太明白。如果它之前找到了Font2.png,爲什麼它第二次失敗?
我懷疑CCLabelBMFont.m沒有正確的線
configuration_ = FNTConfigLoadFile(fntFile);
加載configuration_變量,因爲當我嘗試NSLog的是,我得到一個EXC_BAD_ACCESS信號。
好的,我發現如果我不從場景的孩子中移除標籤,錯誤不會發生。但是,嘿,那麼我該如何處理...呃,標籤本身?它不會堆疊內存嗎? – Voldemort