刚开始还很糊涂 dx 怎么做到释放,光设置一个 >autorelease 就够了么?
是的确实够了,假设你有一个自定义的类继承自 CCObject,然后使用 CREATE_FUNC(OBSManager); 宏作为静态创建对象方法,
然后你在使用的时候,
obsMan = OBSManager::create();
obsMan 为你管理类的一个成员变量,那么当你第二次用到 obsMan 的时候(obsMan->update(dt); )你会发现蛋疼了,报错,调试跟踪,调试器停在了一个你绝对想象不到的地方,看吧
803
怎么会这样,不可能啊!
但事实就是这样,突然想到,是不是 obsMan 已经被释放了obsMan对象的内存被其他占掉了,所有会跳转到你想象不到的地方,
然后尝试在创建 obsMan 后加了一句
obsMan = OBSManager::create();
obsMan->retain(); //增加一次引用
这样就没有问题了,也彻底明白了 autorelease 那回事。
CCArray 对象如果作为类成员,也需要 retain
菜鸟成长记录。。。