在CCLayer的源代码中有如下实现:
// for the subclass of CCLayer, each has to implement the static “node” method #define LAYER_NODE_FUNC(layer) …
针对这我做了一些实验:
我重写了一个CCLayer的子类,没有实现这个宏,也没有init()方法,在其构造函数中进行场景的初始化。在启动时用了如下的方式:
Mylayer* pLayer = new Mylayer();CCDirector::sharedDirector()->runWithScene((CCLayer *) pLayer);发现这样可以调用,没出现什么问题,使用切换场景的方法同样正常。我又把这个类实例化后作为一个子节点添加到某个场景中,在切换场景后同样正常,没有出现内存泄漏的情况。我并没有手动释放实例。
这个类在初始化时没有使用COCOS2D-X实现的autorelease pool,理论上来说应该会造成一些内存泄漏的问题。但是实际情况似乎并不是这样的,而且这样的实现同样可用。那么,cocos2d-x为何还能在切换场景时自动释放掉那些内存的呢?
莫名其妙的问题解决了,我重装了mac系统,重装了xcode4.2,唯一和以前不一样的是,我重装xcode的时候时间改成了2012年1月1日,上次忘了改回来了,这次改回来了,就安装成功了
额。。。不好意思。。。回错贴了。。。。。