Swift iOS声音内存泄漏?
我正在测试我的应用程序,每当播放声音文件(任何声音文件)时,我都会注意到一些有趣的事情。我注意到较小的声音文件会增加大约0.01MB的内存,播放后不会释放内存,较长的声音文件在播放后会增加大约1.8-2.0MB的内存 我使用仪器泄漏检查来测试应用程序,看看到底发生了什么,我收集到的确实是音频文件 我通常使用SKAction.PlaySoundFileName()播放音频文件。不确定这是否与此有关Swift iOS声音内存泄漏?,ios,swift,performance,memory-leaks,Ios,Swift,Performance,Memory Leaks,我正在测试我的应用程序,每当播放声音文件(任何声音文件)时,我都会注意到一些有趣的事情。我注意到较小的声音文件会增加大约0.01MB的内存,播放后不会释放内存,较长的声音文件在播放后会增加大约1.8-2.0MB的内存 我使用仪器泄漏检查来测试应用程序,看看到底发生了什么,我收集到的确实是音频文件 我通常使用SKAction.PlaySoundFileName()播放音频文件。不确定这是否与此有关 let gameOver = SKAction.playSoundFileNamed("gameOv
let gameOver = SKAction.playSoundFileNamed("gameOver.wav", waitForCompletion: false)
sprite.runAction(gameOver)
我不确定这是我的问题还是一个已知的问题。或者这甚至是一个问题?只是好奇而已
几个月前我遇到了这个问题,所以我尝试了
AudioToolbox
框架作为替代方案,它工作正常,没有内存泄漏
我想在游戏中使用一些声音效果,因此我创建了一个类似于bellow的函数,用于在sfx阵列中设置所有systemSoundID
var sfx = [SystemSoundID]()
func createSfx() {
var i = 0
while i < 8 {
var fileName = ""
switch i {
case 0:
fileName = "coinCollected"
case 1:
fileName = "laserGun"
case 2:
fileName = "laserBeamShutOff"
case 3:
fileName = "powerDown"
case 4:
fileName = "shipMovement"
case 5:
fileName = "openBlockade"
case 6:
fileName = "invisibilityOn"
case 7:
fileName = "outOfFuel"
default:
print("Error creating sfx")
}
sfx.append(SystemSoundID())
let filePath = NSBundle.mainBundle().pathForResource(fileName, ofType: "wav")
let soundURL = NSURL(fileURLWithPath: filePath!)
AudioServicesCreateSystemSoundID(soundURL, &sfx[i])
i += 1
}
}
另外,正如你所知,我在使用这个时发现了一个问题。如果您使用AVAudioPlayer
播放背景音乐,则音效的音量不会超过设备上的中点。我不知道为什么会发生这种情况,但我浪费了很多时间试图找到一个替代的声音效果,这是最好的选择,尽管轻微的音量问题
希望这能帮助一些正在寻找SKAction的好替代方案的人。几个月前,我遇到了这个问题,所以我尝试了
AudioToolbox
框架作为替代方案,它工作正常,没有内存泄漏
我想在游戏中使用一些声音效果,因此我创建了一个类似于bellow的函数,用于在sfx阵列中设置所有systemSoundID
var sfx = [SystemSoundID]()
func createSfx() {
var i = 0
while i < 8 {
var fileName = ""
switch i {
case 0:
fileName = "coinCollected"
case 1:
fileName = "laserGun"
case 2:
fileName = "laserBeamShutOff"
case 3:
fileName = "powerDown"
case 4:
fileName = "shipMovement"
case 5:
fileName = "openBlockade"
case 6:
fileName = "invisibilityOn"
case 7:
fileName = "outOfFuel"
default:
print("Error creating sfx")
}
sfx.append(SystemSoundID())
let filePath = NSBundle.mainBundle().pathForResource(fileName, ofType: "wav")
let soundURL = NSURL(fileURLWithPath: filePath!)
AudioServicesCreateSystemSoundID(soundURL, &sfx[i])
i += 1
}
}
另外,正如你所知,我在使用这个时发现了一个问题。如果您使用AVAudioPlayer
播放背景音乐,则音效的音量不会超过设备上的中点。我不知道为什么会发生这种情况,但我浪费了很多时间试图找到一个替代的声音效果,这是最好的选择,尽管轻微的音量问题
希望这能帮助一些正在寻找SKAction替代方案的人。你能发布一些关于如何创建和播放声音的代码吗?是的,我会用一些代码更新文章。目前还没有找到解决方案。如果有人知道的话,我很想知道原因。这是iOS中的一个bug,其他开发者已经对Stackoverflow发表了评论。我还在研究一个解决方法。你能发布一些关于如何创建和播放声音的代码吗?是的,我会用一些代码更新文章。仍然没有找到解决方法。如果有人知道的话,我很想知道原因。这是iOS中的一个bug,其他开发者已经对Stackoverflow发表了评论。我还在研究解决办法。