IT技术问答
联系我们
你的位置:主页 > IT技术问答 > 正文IT技术问答
cocos2d-x 3.0 内存管理机制,cocos2d-x3.0
编辑:环亚 发布时间:2019-01-31

cocos2d-x 3.0 内存管理机制,cocos2d-x3.0

***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************





AAAAAAA>





2.代码观-cocos2d-x的内存管理机制

创建一个对象,来看看一看这个管理机制。

打开项目,在入口程序AppDelegate.cpp中可以看到:

 // create a scene. it's an autorelease object
	auto scene = HelloWorld::createScene();

    // run
    director->runWithScene(scene);

创建了一个场景,并运行,跟踪进去,创建场景的函数:

// 'scene' is an autorelease object
    auto scene = Scene::create();
    
    // 'layer' is an autorelease object
    auto layer = HelloWorld::create();

在createScene函数中,进行了场景的创建和图层的创建。

都用的是create方法,无论是scene还是layer,它们都是属于node子类,同样node也是ref的子类。

之前说过,Ref类就是cocos2d-x的内存管理机制。

跟踪到,Ref类,可以发现:

<span style="font-size:14px;">class CC_DLL Ref
{
public:
    /**
     * Retains the ownership.
     *
     * This increases the Ref's reference count.
     *
     * @see release, autorelease
     * @js NA
     */
    void retain();
    
    /**
     * Release the ownership immediately.
     *
     * This decrements the Ref's reference count.
     *
     * If the reference count reaches 0 after the descrement, this Ref is
     * destructed.
     *
     * @see retain, autorelease
     * @js NA
     */
    void release();

    /**
     * Release the ownership sometime soon automatically.
     *
     * This descrements the Ref's reference count at the end of current
     * autorelease pool block.
     *
     * If the reference count reaches 0 after the descrement, this Ref is
     * destructed.
     *
     * @returns The Ref itself.
     *
     * @see AutoreleasePool, retain, release
     * @js NA
     * @lua NA
     */
    Ref* autorelease();

    /**
     * Returns the Ref's current reference count.
     *
     * @returns The Ref's reference count.
     * @js NA
     */
    unsigned int getReferenceCount() const;
    
protected:
    /**
     * Constructor
     *
     * The Ref's reference count is 1 after construction.
     * @js NA
     */
    Ref();
    
public:
    /**
     * @js NA
     * @lua NA
     */
    virtual ~Ref();
    
protected:
    /// count of references
    unsigned int _referenceCount;
    
    friend class AutoreleasePool;
    
#if CC_ENABLE_SCRIPT_BINDING
public:
    /// object id, ScriptSupport need public _ID
    unsigned int        _ID;
    /// Lua reference id
    int                 _luaID;
#endif
};
</span>

               。。。。。 好长参考资料:

sdhjob(沈老师)





***************************************转载请注明出处:http://blog.csdn.net/lttree********************************************


ios内存管理机制

后台不占用cpu但是占用运存,程序开多了会自动关闭一些程序腾出运存
 
cocos2d-x 30中 auto什意思 详细点

自动类型变量
比如原来要指定变量是int还是float,现在可以用auto,在赋值的时候,编译器自动识别类型。
这个是C++11的新标准,你可以参考C++11新标准文档。
 

http://www.bkjia.com/Androidjc/854688.htmlwww.bkjia.comtruehttp://www.bkjia.com/Androidjc/854688.htmlTechArticlecocos2d-x 3.0 内存管理机制,cocos2d-x3.0 ***************************************转载请注明出处:http://blog.csdn.net/lttree *****************************************...

本文源自: AG环亚国际官网

上一篇:数据库事务的四大特性以及事务的隔离级别,事务四大隔离级别
下一篇:没有了