目前遇到这个情况,我的需求是连续不断的执行音频播放,但是在连续播放120多个音频之后,出现了内存泄漏,这是通过xcode观察到的,一旦收到内存泄漏的警告,app最后必然会崩溃,主要是jsb.AudioEngine.setFinishCallback 这一句执行的时候容易造成内存泄漏
麻烦提供更详细一点的信息,使用引擎的版本,以及崩溃时在 Xcode 中看到的堆栈信息。 @zjchal1
另外前一段时间有解决一个 audio 问题:在 iOS 上频繁开始停止音乐,概率崩溃的问题,可以看一下是否一样
Issue: jsb.AudioEngine.setFinishCallback 内存泄漏(xcode提示 received memory waring)
cocos2d-x version: 3.16
devices test on: ipad mini1
developing environments
Xcode version: 9.3.5
this._audioID = jsb.AudioEngine.play2d("a1.mp3");
if (this._audioID !== jsb.AudioEngine.INVALID_AUDIO_ID) {
jsb.AudioEngine.setFinishCallback(this._audioID, function(id, filePath){
this._audioID = jsb.AudioEngine.INVALID_AUDIO_ID;
var isExist = false;
for(var o in this.play_audios)
{
if(this.play_audios[o]==filePath)
{
isExist = true;
break;
}
}
if(isExist==false)
{
this.play_audios.push(filePath)
}
if(this.isStory==true)
{
this.playAudioEnd();
}
else
{
this.isPlaying = false;
this.clickFlag = false;
this.setTImgTouch(true); //设置可触摸;点击之后播放下一段音频(an.mp3)
this.setFImgTouch(true); //设置可触摸;点击之后播放下一段音频(an.mp3)
}
}.bind(this));
}
你的联系方式我可以直接沟通吗,这样效率比较高 我的邮件是zjchal@163.com你发微信或者qq即可
cocos2d-x version: 3.16
devices test on: ipad mini1
developing environments
Xcode version: 9.3.5
this._audioID = jsb.AudioEngine.play2d(“a1.mp3”);
if (this._audioID !== jsb.AudioEngine.INVALID_AUDIO_ID) {
jsb.AudioEngine.setFinishCallback(this._audioID, function(id, filePath){
this._audioID = jsb.AudioEngine.INVALID_AUDIO_ID;
var isExist = false;
for(var o in this.play_audios)
{
if(this.play_audios[o]==filePath)
{
isExist = true;
break;
}
}
if(isExist==false)
{
this.play_audios.push(filePath)
}
if(this.isStory==true)
{
this.playAudioEnd();
}
else
{
this.isPlaying = false;
this.clickFlag = false;
this.setTImgTouch(true); //设置可触摸;点击之后播放下一段音频(an.mp3)
this.setFImgTouch(true); //设置可触摸;点击之后播放下一段音频(an.mp3)
}
}.bind(this));
}