Question

J'ai été chercher de la documentation pour cocos2d-x, mais il semble être vraiment, vraiment pauvres, au-delà des principes de base.Je comprends que mes classes, devrait hériter de CCObject pour pouvoir l'utiliser (à l'origine du cacao) retain/release mécanisme, mais je suis toujours confus au sujet de ce qui se passe quand vous new quelque chose. init n'est pas appelé automatiquement.est-il OK pour appeler de l'intérieur, le constructeur?n'est que la seule garantie que mon objet sera de commencer avec un compte de référence de 1?qu'est-ce que CC_SAFE_DELETE et quand dois-je utiliser?faire release et autorelease fonctionne exactement comme dans le cacao?ce sujet CC_SYNTHESIZE?J'ai juste besoin de voir un correctement codé exemple de classe (et c'est l'instanciation/destruction) de comprendre ce que je suis censé faire, afin de ne pas de vis et de laisser les fuites de mémoire.je vous remercie.

Était-ce utile?

La solution

Si vous regardez le code de CCObject classe, vous verrez que c'est le constructeur compte de référence est défini à 1, il s'.Ainsi, la création d'un objet avec new est correcte.Init est pas appelé car CCObject classe n'a pas une telle méthode.Habituellement, je préfère de créer des objets à l'aide de constructeur statique.Qch comme

MyClass* MyClass::createInstance()
{
    MyClass* object = new MyClass();

    // you can create virtual init method
    // and call it here

    if( initWasSuccessful )
    {
        object->autorelease();
    }
    else
    {
        CC_SAFE_RELEASE_NULL(object);
    }
    return object;
}

Sur tous des macros comme CC_SAFE_DELETE - vous pouvez les trouver dans le code de cocos2dx.Cette macros juste vérifier si l'objet est NULL pour éviter l'écrasement sur essaie d'appeler la méthode release.

Autres conseils

La réponse fournie par Morion est grand, je voudrais juste ajouter quelques liens utiles à propos de cette question.

Ici vous pouvez trouver les officiels de gestion de la mémoire dans Cocos2d-x page:Gestion de la mémoire dans Cocos2d-x

Cette page du forum contient également un peu plus de détails et de précisions à ce sujet:Libération mémoire de Cocos2d-x

Profitez de codage!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top