Cocos2d-x游戏开发之CC_SAFE_RELEASE

来源:互联网 发布:mysql 32位 64位 编辑:程序博客网 时间:2024/06/05 13:01

本站文章转载务必在明显处注明:原文链接:http://blog.csdn.net/cjsen/article/details/9357531

前言

CC_SYNTHESIZE_RETAIN 相当于 @property(nonatomic, retain),申明一个Public变量,必须注意的是这里申明的变量必须是继承自CCObject的。帮你自动生成管理对象的retain与release。

源码

#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; \    } \} 

在源码上,就是自动帮你生成set与get函数;

.h声明说明

    //CC_SYNTHESIZE_RETAIN(varType, varName, funName)    CC_SYNTHESIZE_RETAIN(CCSprite*, m_plyerSprite, PlyerSprite);
varType:声明的变量类型

varName:当前类的私有变量名(可以当前类中调用)

funName:set与get的方法名

.ccp中的析构函数中做如下调用(释放的过程)

TiledScene::TiledScene():m_plyerSprite(NULL){    };TiledScene::~TiledScene(){    CC_SAFE_RELEASE(m_plyerSprite);};

在其他地方调用如下(会自动生成get与set方法)

pScene)->getPlyerSprite();


另外:类似生成set与get方法的宏还有

CC_SYNTHESIZE (CC_SYNTHESIZE(float,m_height, Height);


原创粉丝点击