二段构造->REF引用计数管理->PoolManager自动释放池

17 篇文章 0 订阅

二段构造:
是什么->先构造,再初始化,初始化成功则返回引用,失败则销毁
为什么->cocos中结合引用计数,将内存交给poolManager管理
避免使用try catch异常处理
C++构造没有返回值,不能运行virsual函数
为每一个类提供一个静态工厂方法来代替构造函数


REF:
是什么->cocos中使用引用计数内存管理的类的基类
为什么->普通C++的new delete会出现一个问题,对象被多个对象引用的时候,不知道该由谁delete
对象从别处获得(共享的对象): 先调用x->retain(); 释放: x->release()[这时必须先retain了, 否则可能别的拥有者调用了release导致x对应的资源被真的释放, 这里获得的是一个野指针]


自动释放池PoolManager:
是什么->cocos对象调用autoRelease的时候,交给PoolManager管理,在一个loop的生命周期中,如果对象被retain则对象保存下来(如addChild)
CCAutoreleasePool的逻辑是,当你调用object->autorelease(),object就被放到自动释放池中。自动释放池能够帮助你保持这个object的生命周期,直到当前消息循环的结束。在这个消息循环的最后,假如这个object没有被其他类或容器retain过,那么它将自动释放掉。
为什么->


(详谈二段构建模式)http://cn.cocos2d-x.org/tutorial/show?id=1499 
(设计的两难:选择异常还是两段构造) http://www.cppblog.com/luckycat/archive/2010/03/04/108899.aspx
(Cocos2d-x中的引用计数和自动释放池) http://cn.cocos2d-x.org/tutorial/show?id=2300
Cocos2d-x中的引用计数(Reference Count)和自动释放池(AutoReleasePool)
http://cn.cocos2d-x.org/article/index?type=cocos2d-x&url=/doc/cocos-docs-master/manual/framework/native/v2/memory/refcount-autoreleasepool/zh.md


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值