我想实现一个磁铁对象的状态机,一个磁铁对象保存一个状态机的指针。因为一个游戏场景中可能有多个磁铁,所以我不能把状态机设置为单例。
所以我让状态机集成Ref,采用自动内存管理。
但是问题来了,在加载游戏场景的时候,磁铁对象先是创建了状态机,然后直接释放了。我的磁铁对象是保存状态机的指针的,按理说状态机引用计数不为0,不会被释放啊。
我在创建状态机的时候,不调用autorelease,就不会有问题。
已经打了大半天断点了,求教。谢谢。
控制台输出信息
要retain啊
_fsm没有被retain, 所有你调用了autorelease()后在下一帧就已经被释放了,你可以retain后在Magnet的析构函数里调用_fsm->release()来释放
你的方法我试过,这样状态机不能被释放。我现在在Magnet的析构函数里CC_SAFE_DELETE(_fsm),不用引用计数了
现在运行起来暂时没什么问题