本站文章转载务必在明显处注明:原文链接:http://blog.youkuaiyun.com/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);)