CCMenu如何发生SIGSEV崩溃错误?

时间:2014-01-07 09:26:08

标签: ios objective-c cocos2d-iphone

cocos2d-iphone 1.0.1。我收到了两个SIGSEV崩溃报告,分为两部分:

CCMenu.m

-(void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event {
    NSAssert(state_ == kCCMenuStateTrackingTouch, @"[Menu ccTouchEnded] -- invalid state");

    [selectedItem_ unselected];
    [selectedItem_ activate];   // <--- Here

    state_ = kCCMenuStateWaiting;
}

CCMenuItem.m

-(void) activate {
    if(isEnabled_)
        [invocation_ invoke];   // <--- Here
}

我有几个回溯,但它们没有提供有关我的代码的有用见解 - 它们都是指cocos2d,CoreFoundation或UIKit库。样本一:

0   MyGame  0x002609f0      testflight_backtrace
1   MyGame  0x002602d8      TFSignalHandler
2   libsystem_platform.dylib    0x3bdfa062  _sigtramp
3   CoreFoundation  0x312e4da2  -[NSInvocation invoke]
4   MyGame  0x000ee9f2  -[CCMenuItem activate] in CCMenuItem.m on Line 128
5   MyGame  0x000ed9be  -[CCMenu ccTouchEnded:withEvent:] in CCMenu.m on Line 201
6   MyGame  0x0010e26a  -[CCTouchDispatcher touches:withEvent:withTouchType:] in CCTouchDispatcher.m on Line 268
7   MyGame  0x0010e67e  -[CCTouchDispatcher touchesEnded:withEvent:] in CCTouchDispatcher.m on Line 337
8   MyGame  0x0010f5d8  -[EAGLView touchesEnded:withEvent:] in EAGLView.m on Line 330
9   UIKit   0x33b3ddd8  -[UIWindow _sendTouchesForEvent:]
10  UIKit   0x33b38e64  -[UIWindow sendEvent:]
...

我仍在尝试自己复制这个。我所知道的是selectedItem_可能是一个僵尸对象,因为我很久以前就设法复制了它。这对我没什么帮助。

我的游戏到处都有几个CCMenu个实例,我的印象是很多菜单都是罪魁祸首,而不仅仅是一个。我必须和他们做一些有趣的事情,但我无法弄清楚是什么。

相反,我想知道,哪种代码可能导致CCMenu 上的SIGSEV错误?

0 个答案:

没有答案