3.0垃圾回收的问题

一直再用3.0和lua, 遇到几个比较大的问题
1:对象被removeFromParent之后内部的所有属性包括自定义的均为nil(被清空),但是该对象本身依然存在(不是nil)。这个情况给我带来非常大的麻烦,半吊子的垃圾回收,能不能直接把这个对象干掉啊,别留个空壳子。或者在其他地方引用它的时候执行removeFromParent别回收掉。

2.一个amature在屏幕外面停留超过10秒左右会自动被回收掉,导致我移进场景啥也看不到,好吧 想移进场景都难,因为已经被清空了- -#。

  1. xxx = nil
  2. retain 记得手动 release

你说的12我都明白,我吐槽的是他这个机制,要不就全都让我手动控制,要不他全都自动控制搞利落了

这些对象的清空完全是在没有提醒的情况下进行的,导致我调用出错,1还能理解,2从原则上应该算bug,有点自作聪明。

你的问题是C++开发者容易遇到的问题。如果create后没有被引用,会被自动释放掉。
我这里有一个cocos对象自能指针,可以差不多解决这个问题,http://www.cppblog.com/zdhsoft/archive/2014/08/01/207880.html
使用例子:
XCocosPtr m_ParticleSprite;
init:
m_ParticleSprite.ptr_create();
m_ParticleSprite->setPosition(CCPointZero);
m_ParticleSprite->setAnchorPoint(CCPointZero);
不用的时候,只需要m_ParticleSprite=nullptr;就可以了

哥 都addchild了 就是没进屏幕给自动回收了

第一个问题使用this->removeFromParentAndCleanup(true);
不知道行不行

没用 这个其实就是removeFromParent
不过能理解 毕竟它还要同时遵循lua的gc机制