AVMIDIPlayer泄漏内存

时间:2015-03-15 18:17:00

标签: swift ios8 avfoundation midi

我想在iOS 8.2上使用AVMIDIPlayer播放MIDI文件。

这确实有效,但是很短的次数:内存似乎永远不会被释放,并最终被填满。

下面是我在Swift 1.2中的代码,减少到最低限度:一切都发生在ViewController中,没有其他类,没有代理,没有错误检查等。

界面只有三个按钮:NEW(实例化一个新的AVMIDIPlayer和预卷),PLAY,STOP。

这个内存问题发生在模拟器和实际设备上,声音和midifile越大,它就越糟糕。

我注意到在创建新的AVMIDIPlayer实例时以及在播放midifile时RAM会增长(在后一种情况下,你甚至可以达到+ 4Mb /秒)。

我错过了什么?

感谢您的帮助。

import UIKit
import AVFoundation

class ViewController: UIViewController {
    var mp:AVMIDIPlayer?

    @IBAction func newButton(sender: AnyObject) {
        mp = AVMIDIPlayer(contentsOfURL: NSBundle.mainBundle().URLForResource("ahVous", withExtension:"mid"),
                           soundBankURL: NSBundle.mainBundle().URLForResource("TimGM6mb", withExtension:"sf2"),
                                  error: nil)
        mp!.prepareToPlay()
    }
    @IBAction func playButton(sender: AnyObject) {
        mp!.play(nil)
    }
    @IBAction func stopButton(sender: AnyObject) {
        mp!.stop()
    }
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

0 个答案:

没有答案