怎么理解new和autorelease,有点迷

helloWorld案例中有这样的代码
static TYPE* create()
{
TYPE *pRet = new(std::nothrow) TYPE();
— if (pRet && pRet->init())
— {
----- pRet->autorelease();
----- return pRet;
— }
----- …
}
这里的autorelease调用后是不是将new的对象放入到回收池中,也就是增加了引用计数这个功能
如果不调用autorelease是不是就没有引用计数这一说,也就是C++中new和delete的关系

另外调用autorelease后,下一帧开始时这个对象的引用计数是不是1+N(N是所有引用到的数量)
也就是不管你代码之前有多少普通指针引用到这个对象,autorelease会自动计算出这些引用数量
并在一帧开始时在这个数量上+1,也就是N+1,一帧结束后再-1…MMP :9:

所以这里的引用计数和C++中的shared_ptr智能指针不一样,这里可以计算以前所有的指针引用

PS:好像没有retainCount()这个成员…
看到很多案例中都用CCLOG去调试代码,为什么我的HELLOWORLD不行…有什么好的调试方法么?
:6::6::6::6::6::6::6::6::6::6::6::6::6::6::6::6::6::6::6::6::6::6::6:

调试?直接打断点调试不就好了吗

使用工厂模式create对象后,应用计数 =1,当调用addChild,retain等时,引用计数也会+1,不调用不会加,等待下一帧时,计数-1,然后检查计数==0的对象释放,大概计数机制是这意思

create后会+1 ,那么用NEW以后再autorelease呢

除了断点调,有没有什么地方可以显示LOG呢

就是设置他为自动释放的,autorelease后才会有计数应用,否则需要自己去delete

新手,正确的路子是把PoolManager的源码看一看,这里用的内存解决方案是从cocos2d-objc遗传下来的。花时间看看,懂个大概就行。