Сбой в int retVal = UIApplicationMain(argc, argv, nil, @AppController); в cocos2dx 2.2.3

Мой фрагмент кода выглядит следующим образом:

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 равен нулю.

Информация о стеке показана ниже:

введите здесь описание изображения

Кто-нибудь сталкивался с таким вопросом?


person Dracuuula    schedule 24.05.2014    source источник
comment
Вам нужно предоставить нам больше информации, чтобы помочь вам; попробуйте развернуть обратную трассировку, чтобы увидеть, где происходит сбой. (Это ползунок в правом нижнем углу окна Xcode.) На самом деле сбой не происходит в отображаемой строке. Это также помогло бы показать сообщение журнала, которое печатается в отладчике. (Возможно, вам придется нажать «Продолжить», чтобы вывести сообщение об ошибке, если у вас установлена ​​точка останова исключения.)   -  person Jesse Rusak    schedule 24.05.2014
comment
developer.apple.com/library/ios/recipes/   -  person LearnCocos2D    schedule 24.05.2014


Ответы (1)


Из примера в вопросе я не могу сказать наверняка, но в моем случае это был частичный рефакторинг изменения имени переменной экземпляра IBOutlet.

Изменение имен переменных IBOutlet с помощью инструментов рефакторинга Xcode может легко привести к тому, что ваше приложение получит NSAssert / NSException (также известный как сбой) в UIApplicationMain()...

Xcode не может переименовать outlet property в рефакторинге -> переименовать... Это означает, что вам нужно вручную открыть файлы .xib, в которых упоминается эта переменная экземпляра, и вручную изменить имена там.

Полный наглядный пример см. в этой теме и в моем ответе: Изменение имен переменных IBOutlet и сбой в UIApplicationMain()

person Cerniuk    schedule 25.09.2017