您的位置:首页 > 移动开发 > Objective-C

ccArrayRemoveAllObjects

2016-03-25 17:19 435 查看


最近游戏项目bugly收到若干崩溃日志,简单日志如下:


SIGSEGV(SEGV_MAPERR)

  #00 pc 00a89062 /data/app-lib/com.bilibili.meng.uc-2/libcocos2dcpp.so (cocos2d::ActionManager::removeAllActionsFromTarget(cocos2d::Node*) +09) [armeabi-v7a]
  #01 pc 00a54627 /data/app-lib/com.bilibili.meng.uc-2/libcocos2dcpp.so (spritebuilder::CCBAnimationManager::~CCBAnimationManager() +18) [armeabi-v7a]

翻阅cocos2d-x代码,该函数是

首先感觉
if (ccArrayContainsObject(element->actions, element->currentAction)
&& (! element->currentActionSalvaged))

这一行element->actions不判空是不行的,因为:

这里面的调用没判空 直接把指针拿来用了。

但是从bugly上看问题并非出在这里,而是出在ccArrayRemoveAllObjects这个接口的调用上。

这个接口也是这样,没有判空,首先抛却res是否正确的情况,这样的不判空就用指针的调用是不被允许的。

不知道有没有大神遇到过这样的情况。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  游戏 cocos2d-x