解决了一个UITextBMFont内存泄漏的问题

前几天发现只要UI中一加入UITextBMFont就会造成内存泄漏。今天同事终于帮我找到原因了。问题出在下面这个函数

void TextBMFont::setFntFile(const char *fileName)
{
if (!fileName || strcmp(fileName, “”) == 0)
{
return;
}
_fntFileName = fileName;
_labelBMFontRenderer->initWithString("", fileName);
updateAnchorPoint();
labelBMFontScaleChangedWithSize();
_fntFileHasInit = true;
setText(_stringValue.c_str());
}

把函数改成下面这个样子就解决了问题
void TextBMFont::setFntFile(const char *fileName)
{
if (!fileName || strcmp(fileName, “”) == 0)
{
return;
}
_fntFileName = fileName;
_labelBMFontRenderer->setFntFile(fileName);
updateAnchorPoint();
labelBMFontScaleChangedWithSize();
_fntFileHasInit = true;
setText(_stringValue.c_str());
}
没改的那个函数会导致调用两次LabelBMFont中的initWithString函数,从而造成内存泄漏

感谢您的反馈与分享,这个bug已经提交给研发人员,我们会尽快更新引擎。