下载了一个别人大概2.X的源码,改成3.1的。
遇到了一下问题:
Assert failed: The reference shouldn’t be 0 because it is still in autorelease pool.
Assertion failed!
是这段代码报错:
— Begin quote from ____
MenuItemImage *newGameItem = MenuItemImage::create(“newGameA.png”, “newGameB.png”,CC_CALLBACK_1(GameMenu::menuNewGameCallback,this));
MenuItemImage *continueItem = MenuItemImage::create(“continueA.png”, “continueB.png”,CC_CALLBACK_1(GameMenu::menuContinueCallback,this));
MenuItemImage aboutItem = MenuItemImage::create(“aboutA.png”, “aboutB.png”,CC_CALLBACK_1(GameMenu::menuAboutCallback,this));
soundItem = MenuItemImage::create(“sound-on-A.png”, “sound-on-B.png”,CC_CALLBACK_1(GameMenu::menuSoundCallback,this));
Menu mainmenu = Menu::create(newGameItem,continueItem,aboutItem,soundItem,NULL);
— End quote
debug进去的时候发现是Menu调用create的时候生成了一个Vector,并临时生成了几个MenuItem,在回收这几个Item的时候报错了。
开始以为是几个item没有引用的原因,retain了一下也是报错,然后网上搜索了一下,没有相关的信息,看到Ref里面也写了,初始化的时候他的referenceCount就+1了,所有觉得不是retain的原因。
新人,求搭救。