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

cocos2d-x节点(CCAutoreleasePool.h)API

2013-12-06 20:53 337 查看
本文来自http://blog.csdn.net/runaying ,引用必须注明出处!


cocos2d-x节点(CCAutoreleasePool.h)API

温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记

如果你希望使用自动释放池,那么你就可以参考他了
///\cocos2d-x-3.0alpha0\cocos2dx\cocoa
//如果你希望使用自动释放池,那么你就可以参考他了

#ifndef __AUTORELEASEPOOL_H__
#define __AUTORELEASEPOOL_H__

#include "CCObject.h"
#include "CCArray.h"

NS_CC_BEGIN

/**
* @addtogroup base_nodes
* @{
*/

class CC_DLL AutoreleasePool : public Object
{
/**
* 对象池,管理在 array 里面的底层对象
*
* 虽然一旦对象被添加,对象池 Array 都保留该对象,适当的调用 Object::release() 可以确保,对象池里面的引用计数不受影响
* 如果 object 在对象池 array 里,不恰当的 object 释放,可以破坏对象池 array 里正常的 Object::release() 事件
*/
Array   *_managedObjectArray;
public:
/**
* @js NA
* @lua NA
*/
AutoreleasePool();
/**
* @js NA
* @lua NA
*/
~AutoreleasePool();

/**
* Add 将给定的对象添加到 pool 里面.
*
* 相同的对象多次添加到相同的对象 pool ,当 对象 pool 被破坏后,每次加入 object 时,object's 都会调用 Object::release()方法
*
* @param object    添加到对象 pool 里面的对象.
* @js NA
* @lua NA
*/
void addObject(Object *object);

/**
*把给定的对象从对象 pool 里面移除
*
* @param object    即将从对象 pool 里面移除的对象.
* @js NA
* @lua NA
*/
void removeObject(Object *object);

/**
* 清除 autorelease pool.
*
*每次对象被添加到对象 pool 里时都会调用 Object::release()
* @js NA
* @lua NA
*/
void clear();
};

class CC_DLL PoolManager
{
Array           *_releasePoolStack;
AutoreleasePool *_curReleasePool;

AutoreleasePool *getCurReleasePool();
public:
/**
* @js NA
* @lua NA
*/
static PoolManager* sharedPoolManager();
/**
* @js NA
* @lua NA
*/
static void purgePoolManager();
/**
* @js NA
* @lua NA
*/
PoolManager();
/**
* @js NA
* @lua NA
*/
~PoolManager();

/**
* 清除堆栈里面的所有 AutoreleasePool
* @js NA
* @lua NA
*/
void finalize();

/**
* Push 一个新的 AutoreleasePool 到 pool stack.
* @js NA
* @lua NA
*/
void push();

/**
* 从 pool stack 弹出一个 AutoreleasePool.
*
* 这个方法确保至少有一个 AutoreleasePool 在 stack 上
*
* stack 被破坏时 AutoreleasePool 会弹出
* @js NA
* @lua NA
*/
void pop();

/**
* *从当前的 autorelease 池移除一个给定的对象。
*
* @param object    要删除的对象。
*
* @see AutoreleasePool::removeObject
* @js NA
* @lua NA
*/
void removeObject(Object *object);

/**
* 把一个给定的对象添加到当前autorelease池。
*
* @param object   要添加的对象。
*
* @see AutoreleasePool::addObject
* @js NA
* @lua NA
*/
void addObject(Object *object);
/**
* @js NA
* @lua NA
*/
friend class AutoreleasePool;
};

// end of base_nodes group
/// @}

NS_CC_END

#endif //__AUTORELEASEPOOL_H__
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: