У меня EXC_BAD_ACCESS (code = 1 …) иногда code = 2 с использованием cocos2d-x. Получение этой ошибки, когда я делаю, например:
void HelloWorld::gameLogic(float dt)
{
if (gameState == GameFinish)
{
seaBaseWidth = seaBase->getPositionX();
seaBase->stopAllActions();
CCUserDefault::sharedUserDefault()->setBoolForKey("isHaveHistoryOfSeaBaseWidth", true);
CCUserDefault::sharedUserDefault()->setFloatForKey("basePositionX", seaBaseWidth);
CCUserDefault::sharedUserDefault()->flush();
if (!CCUserDefault::sharedUserDefault()->getBoolForKey("isHaveHistoryScore"))
{
int bestSocre = CCUserDefault::sharedUserDefault()->getIntegerForKey("HighestScore");
if (bestSocre < bird->score)
{
CCUserDefault::sharedUserDefault()->setBoolForKey("isHaveHistorySchore", true);
CCUserDefault::sharedUserDefault()->setIntegerForKey("HighestScore", bird->score);
CCUserDefault::sharedUserDefault()->flush();
}
}
CCUserDefault::sharedUserDefault()->setBoolForKey("isHaveHistoryCurrentSchore", true);
CCUserDefault::sharedUserDefault()->setIntegerForKey("currentScore", bird->score);
CCUserDefault::sharedUserDefault()->flush();
CCDelayTime* tmeDelay = CCDelayTime::create(1.4f);
CCCallFunc* progressIncreaseCall = CCCallFunc::create(this, callfunc_selector(HelloWorld::GameOverScoreScreenStart
));
CCSequence *newSeq = CCSequence::create(tmeDelay, progressIncreaseCall);
this->runAction(newSeq);
}
}
Вот код для callfunc_selector
:
void HelloWorld::GameOverScoreScreenStart()
{
CCDirector::sharedDirector()->replaceScene(Score::scene());
}
Его врезаться в CCDictionary.cpp
по этому методу:
unsigned int CCDictionary::count()
{
return HASH_COUNT(m_pElements);
}
Кто-нибудь может мне с этим помочь?
Пытаться
CCSequence *newSeq = CCSequence::create(tmeDelay, progressIncreaseCall, NULL);
вместо
CCSequence *newSeq = CCSequence::create(tmeDelay, progressIncreaseCall);
Надеюсь это поможет.