关于addComponent函数的问题

  1. 用Scene Editor,生成出来的node对象,reference直接是2,人为的release,会导致后面程序崩溃,那这个多出来的一个reference是谁去释放的?在什么时候释放的?
  2. 跟踪了一下代码多出来的reference是函数addComponent运行增加的,可是我记得例子(ComponentsTest)里面的addCompent,不会添加reference,是因为Component不同吗?因为SceneReader添加的是CCComRender,例子里面添加的不是这个??

Zhxy25 你好:
1、 SceneEditor 创建的 node对象就是2,因为首先它被创建出来是1, 然后又加到autorelease池里面,又加了1,这个时候 在下一帧,自动回收池会回收这个对象,让他的reference减1,于是node就是1了。
2、 addComponent CCComReader的reference会加1, 同理CComReader被创建出来的时候也是加到autorelease池里面,下一帧就会回收 变为1, 可以在CCObject release里面下一个条件断点 就明白了

首先谢谢解答 其次 似乎不是我要的
创建会加1 但是 它是Node::create创建 所以是已经放到 autorelease了 这个时候它是1 然后在 其后的代码中 调用到addComponent函数后 它有加了1 它就是2了
最后 sceneEditor创建出来的node 是2的reference 当你下一帧是 释放了1 还有一个reference是因为addComponent来的 我不清楚的是这个1是什么时候释放的。。
一般的对象 回收完是0 这样才能释放 autorelease不会加1 只会在下一帧减1