《不靠谱2.x》001.CCObject

《不靠谱2.x》001.CCObject,第1张

概述一、CCCopying(拷贝类)         Cocos2d-x的根类是CCCopying(类似CCTouchDelegate这样的类也没有父类,但是显然没有CCCopying“枝繁叶茂”),它的源码是一个只包含一个方法的类: class CC_DLL CCCopying{ public: virtual CCObject* copyWithZone(CCZone* pZone); };  

一、CCcopying(拷贝类)
Cocos2d-x的根类是CCcopying(类似CCtouchDelegate这样的类也没有父类,但是显然没有CCcopying“枝繁叶茂”),它的源码是一个只包含一个方法的类:

class CC_DLL CCcopying{ public: virtual CCObject* copyWithZone(CCZone* pZone); };

这是个虚函数,而CCcopying又是根类,因此几乎所有类都可以覆盖这个方法。考虑到写这个笔记的目的是尽可能快地掌握Cocos2d-x引擎,所以关于拷贝的内容暂时先放在一边,等以后学到中高阶后再回来研究。

二、CCObject
头文件源码如下:

class CC_DLL CCcopying { class CC_DLL CCObject : public CCcopying { public: // object ID,ccScriptSupport need public m_uID unsigned int m_uID; // Lua reference ID int m_nLuaID; protected: // count of references unsigned int m_uReference; // count of autorelease unsigned int m_uautoReleaseCount; public: CCObject(voID); virtual ~CCObject(voID); voID release(voID); voID retain(voID); CCObject* autorelease(voID); CCObject* copy(voID); bool isSingleReference(voID) const; unsigned int retainCount(voID) const; virtual bool isEqual(const CCObject* pObject); virtual voID acceptVisitor(CcdataVisitor &visitor); virtual voID update(float dt) {CC_UNUSED_ParaM(dt);}; frIEnd class CCautoreleasePool; }; //定义定时器访问类成员函数 typedef voID (CCObject::*SEL_SCHEDulE)(float); //定义普通回调类成员函数 typedef voID (CCObject::*SEL_CallFunc)(); typedef voID (CCObject::*SEL_CallFuncN)(CCNode*); typedef voID (CCObject::*SEL_CallFuncND)(CCNode*,voID*); typedef voID (CCObject::*SEL_CallFuncO)(CCObject*); typedef voID (CCObject::*SEL_MenuHandler)(CCObject*); typedef voID (CCObject::*SEL_EventHandler)(CCEvent*); typedef int (CCObject::*SEL_Compare)(CCObject*); #define schedule_selector(_SELECTOR) (SEL_SCHEDulE)(&_SELECTOR) #define callfunc_selector(_SELECTOR) (SEL_CallFunc)(&_SELECTOR) #define callfuncN_selector(_SELECTOR) (SEL_CallFuncN)(&_SELECTOR) #define callfuncND_selector(_SELECTOR) (SEL_CallFuncND)(&_SELECTOR) #define callfuncO_selector(_SELECTOR) (SEL_CallFuncO)(&_SELECTOR) #define menu_selector(_SELECTOR) (SEL_MenuHandler)(&_SELECTOR) #define event_selector(_SELECTOR) (SEL_EventHandler)(&_SELECTOR) #define compare_selector(_SELECTOR) (SEL_Compare)(&_SELECTOR) };

详细分析可以看红孩儿的博客:http://www.jb51.cc/article/p-nxwwxhyl-vd.html 。分析得非常详细,几乎每行代码都有注释,但是该不懂的还是不懂。然而没关系,会用就行。还是那句话:暂时先放在一边,等以后学到中高阶后再回来研究。
虽然没看懂,但是很显然CCObject类主要和内存管理(引用计数)有关,还定义了一些方便常用的方法。知道这两点就够了。

三、总结 1、知道了拷贝方法来源于CCcopying 2、知道了内存管理机制于CCObject类中实现 3、知道了常用的schedule_selector等宏于CCObject类中定义并实现

总结

以上是内存溢出为你收集整理的《不靠谱2.x》001.CCObject全部内容,希望文章能够帮你解决《不靠谱2.x》001.CCObject所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1062395.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存