您的位置:首页 > 移动开发 > Cocos引擎

Cocos2d-x游戏开发之CC_SAFE_RELEASE

2013-07-17 16:55 501 查看
本站文章转载务必在明显处注明:原文链接:/article/10070631.html

前言

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);)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐