我cocos2d,我正在使用pushScene和replaceScene移动到下一个场景。但是,我很困惑我们应该使用哪个?
当我在某些地方使用replaceScene时,应用程序崩溃并出现错误,例如
-[UITextView length]: unrecognized selector sent to instance 0x842a750
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[UITextView length]: unrecognized selector sent to instance 0x842a750'
但是,在我的程序中,我没有将长度传递给UITextView。我的计划就是这样 在scene1中我有UITextView,我用scene2替换这个场景。然后
-(id)buttonPressed:(id)sender
{
[description removeFromSuperview]; // It is the textView(description)
CCScene *Scene = [CCScene node];
CCLayer *Layer = [scene2 node];
[Scene addChild:Layer];
[[CCDirector sharedDirector] setAnimationInterval:1.0/60];
[[CCDirector sharedDirector] replaceScene: Scene];
}
但是,当我在replaceScene的存在下使用pushScene时,它运行良好。请澄清我应该在哪些情况下使用哪一个?
谢谢
答案 0 :(得分:3)
几乎在所有情况下,您都希望使用replaceScene。 pushScene方法将前一个场景保留在内存中,这很可能是它没有崩溃的原因。关于那个场景的东西不是很正确,当它在replaceScene之后解除分配时,就会发生崩溃。它与cocos2d的替换场景系统无关。
你在场景1中的UITextView可能经常发布。如果将其创建为自动释放对象,请不要向其发送释放消息。