int retVal = UIApplicationMain崩溃(argc,argv,nil,@" AppController");在cocos2dx中2.2.3

时间:2014-05-24 14:49:16

标签: ios cocos2d-x cocos2d-x-2.x

我的代码段如下:

void HelloWorld::gameOver()
{
CCDirector *pDirector=CCDirector::sharedDirector();
pDirector->getTouchDispatcher()->removeAllDelegates();

this->stopAllActions();

this->unscheduleUpdate();
this->unscheduleAllSelectors();

CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

auto spriteEndbg1 = CCSprite::create("engbg1136.png");
spriteEndbg1->setPosition(CCPoint(visibleSize.width/2, visibleSize.height/2));
this->addChild(spriteEndbg1, 5);

auto spriteTop = CCSprite::create("gameover.png");
spriteTop->setPosition(CCPoint(visibleSize.width/2, visibleSize.height-200));
this->addChild(spriteTop, 5);

//score
auto scorebg = CCSprite::create("endtextbg.png");
scorebg->setPosition(CCPoint(visibleSize.width/2, visibleSize.height-350));
this->addChild(scorebg, 5);
char *str = new char(5);
sprintf(str, "您的得分为:%d", scodeNum);
std::string strScore = str;
CCLabelTTF* pLabel = CCLabelTTF::create(str, "Arial", 50);
pLabel->setPosition(ccp(origin.x + visibleSize.width/2,
                        origin.y + visibleSize.height - pLabel->getContentSize().height));
this->addChild(pLabel, 5);

//try again
auto tyrAgainbg = CCSprite::create("endtextbg.png");
tyrAgainbg->setPosition(CCPoint(visibleSize.width/2, 300));
this->addChild(tyrAgainbg, 5);
CCMenuItemFont::setFontName("American Typewriter");
CCMenuItemFont::setFontSize(60);
auto closeItem = CCMenuItemFont::create("ReStart", this,
                                        menu_selector(HelloWorld::restartFn));

closeItem->setPosition(CCPoint(visibleSize.width/2, 300));
auto menu = CCMenu::create(closeItem,NULL);
menu->setPosition(ccp(0,0));
this->addChild(menu, 5);
}

当我的项目运行此功能后,

会出现崩溃
int retVal = UIApplicationMain(argc, argv, nil, @"AppController");

很奇怪argv为null。

堆栈信息如下所示:

enter image description here

有人遇到过这样的问题吗?

1 个答案:

答案 0 :(得分:0)

从问题中的示例我无法肯定地说,但就我而言,这是对IBOutlet实例变量名称更改的部分重构。

使用Xcode重构工具更改IBOutlet变量名称很容易导致您的应用在NSAssert处获得NSException / UIApplicationMain()(也就是崩溃)......

Xcode无法重命名重构中的outlet property - >重命名...这意味着您必须手动打开引用该实例变量的.xib文件,并在那里手动更改名称。

有关完整的可视化示例,请参阅此主题和我的答案: Changing IBOutlet Variable Names and Crashing at UIApplicationMain ()