0

Cocos2dx で、最適な解放方法はどれですか?

  1. ccObject の @"release()" メソッドをオーバーライドします。
  2. ディストラクターを作成します。
4

1 に答える 1

0

cocos2d-x で既に定義されているマクロを使用できます。

#define CC_SYNTHESIZE_RETAIN(varType, varName, funName)    \
private: varType varName; \
public: virtual varType get##funName(void) const { return varName; } \
public: virtual void set##funName(varType var)   \
{ \
    if (varName != var) \
    { \
        CC_SAFE_RETAIN(var); \
        CC_SAFE_RELEASE(varName); \
        varName = var; \
    } \
}

#define CC_SAFE_DELETE(p)            do { if(p) { delete (p); (p) = 0; } } while(0)
#define CC_SAFE_RELEASE(p)            do { if(p) { (p)->release(); } } while(0)
#define CC_SAFE_RETAIN(p)            do { if(p) { (p)->retain(); } } while(0)

例えば:

CC_SYNTHESIZE_RETAIN(CCLayer*, m_layer, Layer);

次に、で割り当てm_layersetLayer(new_layer);で取得できますgetLayer()

そして、このマクロはオブジェクトの拡張に対してのみ機能しますCCObject

于 2013-03-20T07:13:10.230 に答える