首页 > 代码库 > 建立自己的回收池
建立自己的回收池
http://blog.csdn.net/haomengzhu/article/details/27693365
引擎维护着一个回收池,所有的 autorelease 对象都添加到了这个池中。
多个自动回收池排列成栈结构,当我们手动创建了回收池后,回收池会压入栈的顶端,autorelease 对象仅添加到顶端的池中。当顶层的回收池被弹出释放时, 它内部所有的对象都会被释放一次, 此后出现的 autorelease 对象则会添加到下一个池中。
Cocos2d-x 已经保证每一帧结束后释放一次回收池,并在下一帧开始前创建一个新的回收池,但是我们也应该
考虑到回收池本身维护着一个将要执行释放操作的对象列表,如果在一帧之内生成了大量的 autorelease 对象,将会导致回收池性能下降。
因此,在生成 autorelease 对象密集的区域(通常是循环中)的前后,我们最好可以手动创建并释放一个回收池。
//步骤 a
obj1->autorelease();
obj2->autorelease();
//步骤 b
PoolManager::getInstance()->push(this);
//步骤 c
for(int i=0; i<n; i++) {
obj_array[i]->autorelease();
}
//步骤 d
PoolManager::getInstance()->pop();
//步骤 e
obj3->autorelease();
建立自己的回收池
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。