临时解决方案来了~~~
经追查、对比2.0.10和2.2.2文件发现 在SkeletonDataMgr.cpp脚本的releaseByUUID方法多了_destroyCallback这个处理 实验发现就是这部分代码导致的32位崩溃 所以临时的处理方法是在32位的机器上暂时不添加这段代码 跑了2个小时未发现有别的问题(因为水平有限 没有看懂这部分代码具体是在干啥)
下面贴下代码
void SkeletonDataMgr::releaseByUUID (const std::string& uuid) {
auto dataIt = _dataMap.find(uuid);
if (dataIt == _dataMap.end()) {
return;
}
SkeletonDataInfo* info = dataIt->second;
// If info reference count is 1, then info will be destroy.
if (info->getReferenceCount() == 1) {
_dataMap.erase(dataIt);
#if TARGET_OS_IOS
#ifdef __arm64__
if (_destroyCallback) {
auto& texturesIndex = info->texturesIndex;
for (auto it = texturesIndex.begin(); it != texturesIndex.end(); it++) {
_destroyCallback(*it);
}
}
#endif
#endif
}
info->release();
}