我有一个关于cocos2d的问题。我创建了一个接收触摸的类。这个类是CCLayer
的子类,而init
看起来像这样:
- (id)initWithFrame:(CGRect)frameSize
{
self = [super init];
if (self)
{
frame = frameSize;
size = frame.size;
origin = frame.origin;
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
}
return self;
}
所以一切都保持简单。虽然frame
、size
和origin
是类变量,但现在并不重要。因此,我使用touchDispatcher
注册了我的类,这使我能够处理触摸事件。触摸事件的处理方式如下:
- (BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
return YES;
}
- (void)ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
{
//Some touch logic which i need.
}
在
dealloc
中,我释放所有已保留的信息并取消注册touchDispatcher
。但是dealloc
从未被调用。如果不使用touchDispatcher
注册,则dealloc
会被正确调用。如果重要的话,此类作为另一个CCLayer子类的子项添加,并在该类的dealloc
中释放此类。你漏掉了什么?