Я разработал игру на платформе Cocos2d-x v2 Я начал работу на Android после полного завершения кодирования на Eclipse. Я использовал тот же код на Xcode для создания и версии iOS. После добавления всех необходимых библиотек мне удалось скомпилировать код. Тем не менее, игра висит в момент ее запуска на устройстве iOS, хотя она работает без каких-либо проблем на Android. Я пробовал как эмулятор, так и iPod, но я всегда получаю EXC_BAD_ACCESS при доступе к статическому элементу из статического метода. Статический член всегда указывал бы на 0x0 !! Вот отрывок из кода: \EXC_BAD_ACCESS при доступе к статическому члену?
AppDelegate.cpp
#include "AppDelegate.h"
#include "NASEncData.h"
AppDelegate::AppDelegate()
{
ep = NASEncData::sharedUserData();
}
NASEncData.h
namespace CocosNas
{
class NASEncData : public CCObject
{
public:
static NASEncData* sharedUserData();
private:
NASEncData();
static void initXMLFilePath();
static std::string m_sFilePath;
}
}
NASEncData.cpp
#include "NASEncData.h"
NASEncData* NASEncData::sharedUserData()
{
initXMLFilePath();
// only create xml file one time
// the file exists after the programe exit
if ((! isXMLFileExist()) && (! createXMLFile()))
{
return NULL;
}
if (! m_spUserData)
{
m_spUserData = new NASEncData();
}
return m_spUserData;
}
void NASEncData::initXMLFilePath()
{
if (! m_sbIsFilePathInitialized)
{
m_sFilePath += CCFileUtils::sharedFileUtils()->getWriteablePath() + NASENCDATA_XML_FILE_NAME; <----error happens here
m_sbIsFilePathInitialized = true;
}
}
Возможно, экземпляр 'AppDelegate' вызывает конструктор для статической переменной? – yzt
в версии iOS есть файл .mm, который определяет следующее: static AppDelegate s_sharedApplication; - это нормально? – FiFo
Я думаю, что это может быть вашей проблемой. – yzt